codeforces 598A Tricky Sum

时间:2023-03-09 23:41:00
codeforces 598A Tricky Sum

题目链接:http://codeforces.com/contest/598/problem/A

题目分类:大数

题意:1到n 如果是2的次方则减去这个数,否则就加上这个数,求最后的结果是多少

题目分析:数很大,关键是精度问题,刚开始用__int64和double发现都是不对的,后来发现用long long 可以过

代码:

#include<bits/stdc++.h>

using namespace std;

#define LL long long

LL a[]={,,,,,,,,,
,,,,,,
,,,,,,
,,,,,
,,,,}; int main()
{
int t;
LL n;
LL ans;
cin>>t;
while(t--)
{
cin>>n;
ans=n*(+n)/;
//cout<<ans<<endl;
for(int i=;i<=;i++)
{
if(n>=a[i])
{
ans-=*a[i];
}
else
{
break;
}
}
cout<<ans<<endl;
}
return ;
}