这一题摔的有点惨,为嘛?首先是题目看错了,还以为是数据范围的问题,改成__int64,总共wa了两次,在仔细看题目,汗……我应该取模的,好吧,取了模,还是Wa了,额……怎么了,网上翻了别人的代码,哦哦,数据范围有问题,刚才改的时候,又改回成int了,好了,a了。其实这一题蛮简单的,就是找规律……
#include "stdio.h"
#include "math.h"
int main()
{
int T;
__int64 n,k;
scanf("%d",&T);
while(T--)
{
scanf("%I64d",&n);
k=(__int64)sqrt(2.0*n);
if((k+1)*k>=2*n)//就是根据一行的末尾的数,然后确定范围的,(k+1)*k/2==n,开方确定k值的范围,再和n比较就行了,修正一下k值
k--;
printf("%I64d\n",(n-(k+1)*k/2)%9==0?9:(n-(k+1)*k/2)%9);
}
return 0;
}