| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2202 人关注过本帖, 2 人收藏
标题:奉上一个有一定难度的题目,欢迎大家来挑战!
只看楼主 加入收藏
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
czz5242199
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:660
专家分:2400
注 册:2011-10-26
收藏
得分:3 
回复 20楼 beyondyf
这。。我写的如此之乱杨大哥都能看出我的算法来。。

我昨天写的感觉自己再看一遍自己都不一定能看懂

顺便问下LZ我自己测试是没问题的啊,如果错了能不能提供一个数据?
2012-07-15 18:08
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:3 
回复 23楼 czz5242199
呵呵,你的代码不算乱。算法类的代码本就比应用类的难懂。

你的结果也没有任何问题,我测试了所有的1亿组数据。

重剑无锋,大巧不工
2012-07-15 19:59
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
分数平分了?你这么随意,感觉我也像个打酱油的,以后没兴趣回答你的问题了。

重剑无锋,大巧不工
2012-07-15 23:44
fenghelong
Rank: 3Rank: 3
来 自:上海
等 级:论坛游侠
威 望:2
帖 子:209
专家分:197
注 册:2011-8-18
收藏
得分:0 
回复 楼主 cuijunchao
2012-07-16 11:21
全世界安静
Rank: 2
等 级:论坛游民
帖 子:104
专家分:65
注 册:2012-6-4
收藏
得分:0 
#include <iostream.h>
#include <math.h>
int func(int x){
    int len=1,num=0,count,temp,p=x/10;
    while(p){
        len++;
        p/=10;
    }//计算x是几位数,保存在len中
    p=x;
    for(count=0;count<len;count++){
        temp=p%10;
        if(count==len-1){
            if(temp>1)
              num+=pow(10,count);
            else
              num+=x-pow(10,len-1)+1;
            return num;
        }//计算最高位出现1的次数
        if(temp>=1) num+=pow(10,count)*(p/10+1);
        else num+=pow(10,count)*(p/10);
        //计算其它位出现1的次数
        p/=10;
    }
    return num;
}
int main(){
    int m;
    cout<<"Please input m\n";
    cin>>m;
    cout<<"The number of \"1\" is "<<func(m);
    return 0;
}
2012-07-16 16:34
cuijunchao
Rank: 5Rank: 5
来 自:湖南桂东
等 级:职业侠客
威 望:3
帖 子:132
专家分:386
注 册:2012-4-4
收藏
得分:0 
我想重要的不是分数,而是问题,如果这个问题有价值去做,没一分我也会做!
2012-07-21 22:27
w995612220
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:139
专家分:313
注 册:2012-6-20
收藏
得分:0 
http://blog.    上面有道类似的题目,自己参考下。。
2012-07-22 01:43
快速回复:奉上一个有一定难度的题目,欢迎大家来挑战!
数据加载中...
 
   



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

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