Пример #1
0
void test_threads()
{
    {
        std::cout << "non-async" << std::endl;
        std::vector<double> f1(fib(50));
        std::vector<double> f2(fib(50));
        std::vector<double> f3(fib(50));
        std::vector<double> f4(fib(50));

        std::vector<double> f_sum(f1 + f2 + f3 + f4);
        std::sort(f_sum.begin(), f_sum.end());
        print_fib(f_sum);
    }

    {
        std::cout << "async" << std::endl;
        std::future<std::vector<double> > f1(std::async(std::launch::async, []() {
            return fib(50);
        }));
        std::future<std::vector<double> > f2(std::async(std::launch::async, []() {
            return fib(50);
        }));
        std::future<std::vector<double> > f3(std::async(std::launch::async, []() {
            return fib(50);
        }));
        std::future<std::vector<double> > f4(std::async(std::launch::async, []() {
            return fib(50);
        }));

        std::vector<double> f_sum(f1.get() + f2.get() + f3.get() + f4.get());
        std::sort(f_sum.begin(), f_sum.end());
        print_fib(f_sum);
    }
}
int main(){

    int i,j,k,l,test,t=1;

    //freopen("in.txt","r",stdin);

    scanf("%d",&test);

    while(test--){

        scanf("%lld",&n);
        double nd=n,sqd;
        sqd=sqrt(nd);
        int sq=sqd;
        ii ans=0,prev=n,now,v,v1;

        for(i=2;i<=sq;i++){
            now=n/i;
			ans+=((now-1)*i);
            v=f_sum(now+1,prev);
			ans+=(v*(i-2));
            prev=now;
        }
		if(prev>sq){
			now=n/i;
			v=f_sum(now+1,prev);
            //ans+=((now-1)*i);
            ans+=(v*(i-2));
		}


        printf("Case %d: %lld\n",t++,ans);

    }

    return 0;
}