| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2202 人关注过本帖, 2 人收藏
标题:奉上一个有一定难度的题目,欢迎大家来挑战!
取消只看楼主 加入收藏
cuijunchao
Rank: 5Rank: 5
来 自:湖南桂东
等 级:职业侠客
威 望:3
帖 子:132
专家分:386
注 册:2012-4-4
结帖率:66.67%
收藏(2)
已结贴  问题点数:20 回复次数:10 
奉上一个有一定难度的题目,欢迎大家来挑战!
给定两个数a和b,计算出在a和b间1出现的次数,例如:a=1028,b=1032则它们间的数为1028,1029,1030,1031,1032其中1出现的次数为6。
输入:不超过十行,每行两个数a和b。范围大于零小于100000000。输入两个零为结束输入。
输出:一行输出一个数。
参考:1         10
      44       497
346      542
1199    1748
1496      1403
1004     503
0     0
输出:

2
185
40
666
113
105

过两天我就会把我的算法发上来.大家先尝试下,也可以要提示.多交流。
搜索更多相关主题的帖子: 挑战 
2012-07-14 21:48
cuijunchao
Rank: 5Rank: 5
来 自:湖南桂东
等 级:职业侠客
威 望:3
帖 子:132
专家分:386
注 册:2012-4-4
收藏
得分:0 
回复蝙蝠侠:你这方法是最基本的,希望有更好的算法。
2012-07-15 09:03
cuijunchao
Rank: 5Rank: 5
来 自:湖南桂东
等 级:职业侠客
威 望:3
帖 子:132
专家分:386
注 册:2012-4-4
收藏
得分:0 
杨大哥发的连接我看了下!对于1到1000000这种数(多几个零一样算法)之间1的位数很好算的,但是现在是任意一个整数,可能那些方法就不太适用了,当然可以参考,可以考虑加权的那思路,用第归也可以。
2012-07-15 09:34
cuijunchao
Rank: 5Rank: 5
来 自:湖南桂东
等 级:职业侠客
威 望:3
帖 子:132
专家分:386
注 册:2012-4-4
收藏
得分:0 
上楼的算法,把10代进去,好像就不对,大家请量解,我是用手机完成回复的,不准确的地方多包涵。
2012-07-15 09:51
cuijunchao
Rank: 5Rank: 5
来 自:湖南桂东
等 级:职业侠客
威 望:3
帖 子:132
专家分:386
注 册:2012-4-4
收藏
得分:0 
j=0; k=p; 当P=10时怎么处理?
??? while (k>0)
??? {
????????? if (k%10==1) j++; k/=10;
??? }
???
??? i=-1; s=1;
??? while (p>0)
??? {
????????? i++;
????????? k=p%10; p/=10;
????????? if (k==1) j--;
????????? ans+=k*s*j;
????????? if (k==1) ans+=s*i/10+1; else
????????? if (k>=2) ans+=s*i/10*k+s;
????????? s*=10;
2012-07-15 10:00
cuijunchao
Rank: 5Rank: 5
来 自:湖南桂东
等 级:职业侠客
威 望:3
帖 子:132
专家分:386
注 册:2012-4-4
收藏
得分:0 
我用手机回复真的很吃力,没点脑好用,大家量解下!
2012-07-15 10:09
cuijunchao
Rank: 5Rank: 5
来 自:湖南桂东
等 级:职业侠客
威 望:3
帖 子:132
专家分:386
注 册:2012-4-4
收藏
得分:0 
这题目是ACM上的,不是网站上搞的,是我书上的,给出的参考是正确的,大家可以代进去测一下。我觉得这题目有一定难度,大家都可以锻炼下,书上有解答,用的是第归,但我觉的那算法太复杂,我自己又找了一方法,待会都发上来,分享。我决不会照搬书上的东西,那没啥意思,所以大家集思广益!
2012-07-15 10:17
cuijunchao
Rank: 5Rank: 5
来 自:湖南桂东
等 级:职业侠客
威 望:3
帖 子:132
专家分:386
注 册:2012-4-4
收藏
得分:0 
杨大哥的代码我测了一下,全对的!杨大哥果然高手,还请杨大哥把你的思路给大家讲下,谢谢!
2012-07-15 11:12
cuijunchao
Rank: 5Rank: 5
来 自:湖南桂东
等 级:职业侠客
威 望:3
帖 子:132
专家分:386
注 册:2012-4-4
收藏
得分:0 
很经典!
2012-07-15 11:48
cuijunchao
Rank: 5Rank: 5
来 自:湖南桂东
等 级:职业侠客
威 望:3
帖 子:132
专家分:386
注 册:2012-4-4
收藏
得分:0 
#include<stdio.h>
#include<math.h>
long f(long n,int m);
int main()
{long a[10],b[10];
int i=0;
do
    {scanf("%ld\t%ld",&b[i],&a[i]);
     i++;
    }while((a[i-1]>0)||(b[i-1]>0));
i=0;
do
    {printf("%ld\n",a[i]>b[i]? f(a[i],1)-f(b[i]-1,1):f(b[i],1)-f(a[i]-1,1));
     i++;
    }while((a[i-1]>0)||(b[i-1]>0));

}
long f(long n,int m)
{int i=0,s=0;
long p=n;
while(n!=0)
{if(n%10<m) s=s+n%10*i*(long)pow(10.0,i-1);
if(n%10==m) s=s+n%10*i*(long)pow(10.0,i-1)+p-n*(long)pow(10.0,i)+1;
if(n%10>m)  s=s+n%10*i*(long)pow(10.0,i-1)+(long)pow(10.0,i);
n=n/10;
i++;
}
return s;

}
多指点!
2012-07-15 12:16
快速回复:奉上一个有一定难度的题目,欢迎大家来挑战!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018565 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved