题目大意:数根,找到一个数n(1<=n<=9)的第k个相同树根的数。

解题思路:求一个数的树根除了有O(n)的暴力模拟方法,还可以借助(num-1)%9+1公式O(1)时间求解。本题求第k个,直接num+(k-1)*9。因为一个数+9不会改变它的数根。暴力模拟会TLE


AC代码:

#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <iostream>
#include <algorithm>
#include <string>
#include <queue>
#include <map>
#include <stack>
#include <vector>
#include <utility>
using namespace std;

typedef long long ll;

ll k,i,goal;

int main() {
	int T;
	scanf("%d",&T);
	while (T--) {
		cin>>k>>goal;
		cout<<(goal+(k-1)*9)<<endl;
	}
	return 0;
}