Codeforces Round 1107B数根

今天兴起又去cf上康了康(就是找虐QAQ

有个题目是给一个数的数根,和他是这个根的第几个数

戳这里~http://codeforces.com/problemset/problem/1107/B

树根S(5)=5, S(38)=S(3+8=11)=S(1+1=2)=2    S(10)=S(1+0=1)=1S(10)=S(1+0=1)=1.(这里注意从0开始的!!!

开始想着搜索,氮素不可能哇(吼起来!

后来发现 一个数的树根就是他对9取余

具体证明过程http://www.flyingcoloursmaths.co.uk/a-neat-number-trick-digital-roots-and-modulo-9-arithmetic/(数学+嘤语   嘤嘤嘤

加一个栗子解释:

12,345 = 1 × (9,999 + 1) + 2 × (999 + 1) + 3 × (99 + 1) + 4 × (9 + 1) + 5.
12,345 = (1 × 9,999 + 2 × 999 + 3 × 99 + 4 × 9) + (1 + 2 + 3 + 4 + 5)

 

辣么第n个以m为数根的数就是(n-1)*9+m咯(因为从0开始 所以要-1

代码:

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define ios ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
const int manx=100006;
int main()
{
	ios;
	int t;
	cin>>t;
	while(t--)
	{
		ll a,b;
		cin>>a>>b;
		cout<<(a-1)*9+b<<endl;
	}
} 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值