CodeForces 1107B Digital root(找规律)

传送门

每个数字都有个数位和,就是把数字的每一位相加直到数位和是一个个位数。

然后题目就要你求第K个数位和为X的数字是多少。

写一些数字出来就很容易发现规律了

CodeForces 1107B Digital root(找规律)

可以看出每一竖列的数位和是相等的,然后就找到规律是9 * (k - 1) + x,注意数据范围是1e12,是long long,然后就这么多,就可以直接写程序了。

代码如下

#include<iostream>
#include<cstdio>
#include<queue>
using namespace std;


int main()
{
	int q;
	scanf("%d",&q);
	while(q--)
    {
		long long a,b;
		scanf("%lld %lld",&a,&b);
        a--;
        printf("%lld\n",9 * a + b);
	}
	return 0;
}