HDU 1597 数学题

来源:互联网 发布:电脑版淘宝登录 编辑:程序博客网 时间:2024/04/29 07:09
//S = 1121231234.......123456789123456789112345678912.........
//对于任意的数 N,
//先确定其区间 si - si+1
//确定其区间后
//再确定 在si中第几个 1234456789 ,
//然后再确定第几位数
#include <iostream>#include <math.h>using namespace std;#define sum(n)  ((n&1)?(n*(n+1)/2):(n/2*(n+1)))__int64 n;__int64 result;void get_digit(){//首先获得区间__int64 low = (__int64)sqrt((double)n*2.0);__int64 first;for(__int64 i = low ; ;i++){if(sum(i) >= n ){first = i; break;}}__int64 second = n - sum((first -1));result = second%9?second%9:9;}int main(){__int64 k;cin >> k;{while(k--){cin >> n ;get_digit();cout << result <<endl;}}return 0;}

原创粉丝点击