题意:
从1到。。。INF,统计第N个不能开平方数,并求其和。。
算法:
技巧题:
View Code
#include<stdio.h> #include<stdlib.h> #include<string.h> #include<iostream> #include<vector> #include<string> #include<math.h> #include<map> #include<set> #include<algorithm> using namespace std; int T; long long N; int main( ) { scanf("%d",&T); while( T-- ) { scanf("%I64d",&N); unsigned long long temp=0, ans = 0, tp; unsigned long long sb = 0; for( long long i = 2; i <= N; i++) { temp += i * i - (i-1)*(i-1) - 1 ; sb += (i * i - (i-1)*(i-1)) * (i - 1); if( temp>=N ) { tp = temp - N; ans = i * i - tp - 1; sb = sb - tp * (i - 1); break; } } if( N == 1 ) { ans = 2; sb = 2; } printf("%I64u %I64u\n",ans,sb); } }