扩展欧几里得的第一次...... 数字

 

三.数字

题目描述

对于正整数n,定义s(n)n在十进制表示时各位数字的和,d(n)为对n一直做s(n)直到n变成一位数。例如:s(58)=5+8=13s(13)=4d(58)=d(13)=d(4)=4

定义正整数x是优美的,当且仅当存在至少一个正整数y使得y*d(y)=x

Your Task

请你求出,区间[A,B]中有多少个数是优美的。

输入文件

第一行T表示数据组数

对于每组数据,一行中A B

输出文件

对于每组数据,在一行中输出[A,B]中优美的数的个数

样例输入

2

47 58

123456789 9876543210

样例输出

4

2618024258

数据约定

20%:1《=A<=B<=10^8

100%:T<=20,1<=A<=B<=10^10

 

 

 

首先,根据RP守恒定理,今天早上没打开CF,所以此刻RP一定爆棚,就随便编了个d(n)的表达式,没想到居然对了......

(关于RP守恒定理 http://baike.baidu.com/view/88936.htm)

 

d(n)=(n-1)mod 9+1.

 有人问了,为什么不是 n mod 9 呢,当n=9时就不成立啊......

 

然后,我们设 y=9*k+b (b<=9) 为什么b=9是可以的呢? 秋哥小白般地就问了,于是我说,后面会讲.......

 

x=d(y)*y=((y-1) mod 9+1)*y=((b+1)-1)*(9*k+b)=9*b*k+b^2.

 

 

为什么b可以等于9,当y=9 时 , (0+9)mod 9+1=1 才成立 若b不能取9 则 得出的答案是(9+0)mod 9+1=1 不成立

 

 

 

 

得到b从1 到 9 的 方程,然后我比较懒,不想写了,自己推,通式就是 X=9*B*K+B^2  b从1 到 9 递增

 

 

然后发现有一些互相包含的X,排除掉(秋哥说要写“排”字,不然别人WA了,就过来说:“不告诉你”)(大概是:b=1和8  b=3 和 6)

 

又发现有一些有交集的X,可以加上A和B,减掉C

用扩展欧几里得可以推出  ,联立两个方程,解一个不定方程,q=变化数t*x原本的系数,w=最小的x值,满足x mod q=w 的所有x减去即可。

(C是A与B的交集)(大概是:b=2和7  b=4 和 5)

 

最后又发现有的既不包含也不相交,就直接MOD掉......即可 (大概是:b=3和9)

 

 

至此,证毕(霸气护体)

 

贴贴代码:(大家没看上面的话就无视掉吧......)

 

 

 

秋哥的小罗附体:

 

 

 

自我感觉讲得很清楚了.......

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值