B. 数字根
每次测试的时间限制1秒
每次测试的内存限制256 兆字节
输入标准输入
输出标准输出
今天在数学课上,Petya 学习了数字根。
非负整数的数字根是通过对数字求和的迭代过程获得的单个数字值,每次迭代都使用前一次迭代的结果来计算数字和。该过程继续,直到达到一位数。
让我们表示的数字根 X 作为 秒( x ). 然后秒( 5 ) = 5, 秒( 38 ) = S( 3 + 8 = 11 ) = S( 1 + 1 = 2 ) = 2, 秒( 10 ) = S( 1 + 0 = 1 ) = 1.
佩佳得到的作业是 n 任务形式:查找 克- 第一个数字根为的正数 X.
彼佳已经把所有的问题都解决了,只是不知道对不对。你的任务是解决所有n Petya 作业中的任务。
输入
第一行包含一个整数 n (1 ≤ n ≤103) — Petya 作业中的任务数。下一个n 行包含两个整数 克一世 (1 ≤克一世≤1012) 和 X一世 (1 ≤X一世≤ 9)— 一世-th Petya 的任务,您需要在其中找到一个 克一世-th 正数,其数字根是 X一世.
输出
输出 n 线条, 一世-th 行应该包含一个整数——答案 一世- 问题。
这道题非常有意思,每次对一个数+10-1,即可得到位数相同的数,而当个位数剪到0是继续加10-1即+9会使得又会使得之前的十位上的数字a加上9之后成为1x 其中x=a-1,而这加起来正好等于x,所以这是一个公差为9的等差数列,而x即为首项,f(x)=9(k-1)+x;这样这道题就轻松ac了,唯一让我疑惑的是这道题的数据k是1e12,多少有点迷惑人了hh*
#include <iostream>
#include <cstring>
#include <algorithm>
#include <string.h>
#define ll long long
using namespace std;
int main()
{
int t;
cin>>t;
int x;
ll k;
while(t--)
{
cin>>k>>x;
ll ans=(ll)(k-1)*9+x;
cout<<ans<<endl;
}
return 0;
}