早教吧 育儿知识 作业答案 考试题库 百科 知识分享

hdoj1597杭电1597为何总WA?实在想不通,#include#include#includeintmain(){int64tx,n,k;scanf("%lld",&k);while(k--){scanf("%lld",&n);x=int64t((sqrt(double(1+8*n))-1.0)/2.0);n-=x*(x+1)/2;if(!n)n=x;n%=9;if(!n)printf("9\n");elseprintf(

题目详情
hdoj 1597 杭电 1597 为何总WA?实在想不通,
#include
#include
#include
int main()
{
int64_t x,n,k;
scanf("%lld",&k);
while(k--){
scanf("%lld",&n);
x=int64_t((sqrt(double(1+8*n))-1.0)/2.0);
n-=x*(x+1)/2;
if(!n) n=x;
n%=9;
if(!n) printf("9\n");
else printf("%lld\n",n);
}
return 0;
}
▼优质解答
答案和解析
hdu 不支持int64_t 用_int64 或者 long long int
#include
#include
#include
using namespace std;
int main()
{
long long int n,x;
double y;
int t;
cin>>t;
while(t--)
{
cin>>n;
y = (sqrt(1.0 + 8 * n) - 1) / 2;
if(int(y) == y ) // 你这个情况也没有处理
{
x = long long int(y);
}
else
{
x =long long int(y) + 1;
}
n = n - (x - 1) * x / 2;
if(n % 9 == 0)
printf("9\n");
else
printf("%I64d\n",n % 9);
}
}