永发信息网

C语言 ,如何快速统计A到B中的所有包含9 的数字? (A和B可能是很大很大的数, A<B)

答案:4  悬赏:80  手机版
解决时间 2021-03-27 13:47
C语言 ,如何快速统计A到B中的所有包含9 的数字? (A和B可能是很大很大的数, A<B)
最佳答案
A到B是连续的?
最快的方法不是每个数都判断
而是从最高位开始,直接列出带9的数字
比如如果是1111 - 9999
那么首先9xxx的数字
对于剩下的 x9xx的数字,最高位为9的不在其中
然后是xx9x的数字
最后是xxx9的数字
类似于排列组合的方式
每位判断肯定会很慢 无数的模除运算会占用大量的时间

个人之见 仅供参考追问能有流程图或者伪代码么?追答计算A的位数da
计算B的位数db
对于对于从da到db间的每个位数,做处理
循环输出每位为9个数字
对da和db的情况,判断是否小于A或者大于B 其他的直接输出
结束

整个过程可以不用整数类型,而直接用字符串方式读取A和B并直接输出字符串
这样取da db及输出的时候都可以简单得多

输出数字的时候可以用函数嵌套
全部回答
这个应该是一个数学问题吧,比如0-10之间有1个,0-100之间有多少个,0-1000之间有多少个,找出规律,然后用程序去实现,如果直接用atoi去判断的话,时间太长了~
long a=0l;
long b=0l;
    char strtemp[20];
char nine[]="9";
   scanf(" %Ld %Ld",&a,&b);
   printf(" 检查%Ld到%Ld含有9的数字",a,b);
for(long i=a;i{
itoa(i,strtemp,10);
if(strstr(strtemp,nine))
          printf("%d ",i);
}追问这道题会有很大很大的数据。。取值范围在 0 - 10^10000 之间。。
容易推导1到10^n包含数字9的个数的递推公式f[n]=9*f[n-1]+10^(n-1),因为首位为9,则后面的n-1位任意,共有10^(n-1) ,而首位是0到8这9种情况,则回到1到10^(n-1)这种包含数字9的情况,所以是f[n-1],
设1到a之间一共包含数字9有s[1]个,假定a有n位数,a为a1a2...ama(m+1)..a(n),考察最后一位,如果是9,就是1个,不是9,则是0个,最后两位a(n-1)a(n),例如37,则首位为(0,1,2)的时候,就退化为1-10之间包含9的个数,总共有3*f[1],而s[n]表示最后一位数,他包含数字9的个数,
则s[n-1]=a(n-1)*f[1]+s[n];
同理s[n-2]=a(n-2)*f[2]+s[n-1];
...
逐步递推,就是
for(i=n-1;i>=1;i--)s[i]=a[i]*f[n-i]+s[i+1]; 其中f[n]=9*f[n-1]+10^(n-1);a[i]表示a的第i位数字
求出s[1]就是所求,当然还要注意高精度加法和减法
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
看到个对联,让大家瞧瞧
excel中怎么算n次方
现在国家不让在网上买彩票了,可是,请问谁还
单选题Thereusedtobeabigtreeinfrontof
许文强和杜月笙是什么关系
居然还有人说松松创客帮的松松老师是骗子,这
我想知道 LOL琴女和瞎子是什么关系
歌曲《让爱我住家》的歌词
妈妈说:“你折一枝,他折一枝,后面歇脚的人就
穿上棉衣感到暖和,是利用棉衣有效地阻止了人
怎么在网上看昨天晚上CBA辽宁队的比赛啊
我们结婚了鲸鱼夫妇全集谁能给我
权力的游戏第五季尸鬼大军是哪一集
后的水妍适合什么皮肤什么季节
不用生粉和肥膘能做鱼糕吗
推荐资讯
没有安装ETC,怎么才能知道自己欠费多少呢?
准备一个人去上海浪几天,有什么好玩的地方推
皮卡柴油版2.8t相当与柴油机多大的
演员郑爽现男友是谁
win10怎么返回到前一版本过了10天
极上生腰和名器降临哪个好
把一张长8分米,宽5分米的白纸,围成一个圆柱
为什么都的斗鱼进不了 一进去 就到这个网页了
求《腾讯Q币代理商合作协议》、《腾讯Q币代理
爬上珠穆朗玛峰相当走多少公里
为什么我的咪咪比平常男的要大
从北京站到阳高怎么坐车
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?