首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

小弟初来乍到,发个算数小程序玩玩,该如何解决

2012-03-18 
小弟初来乍到,发个算数小程序玩玩#includeiostreamusing namespace stdint power(int n){//求10^nint i

小弟初来乍到,发个算数小程序玩玩
#include<iostream>
using namespace std;
int power(int n){
//求10^n
int i=1;
if(n==0)
return 1;
for(;n>0;--n){
i*=10;
}
return i;
}
int fbit(int n){
//求1...9..9,1至n位数最大值包含的1的个数
if(n==0){
return 0;
}else if(n==1){
return 1;
}else{
return 10*fbit(n-1)+power(n-1);
}
}
int f(int x){
//求1-x包含的1的个数
int bitnum=0,j,k=0;
if(x==0){
return 0;
}
if(x<10){ //x为个位数
return 1;
}
while(1){ //求x的位数
if(power(bitnum)>x){
break;
}else{
++bitnum;
}
}
k=fbit(bitnum-1);
j=x/power(bitnum-1);
k+=(j-1)*fbit(bitnum-1);
k+=f(x-j*power(bitnum-1));
k+=(j==1)?(x-power(bitnum-1)+1):power(bitnum-1);
return k;
}
int main(void)
{
//输入一个数,求1至该数包含的1的个数
int a,i;
cin>>a;
for(i=1;i<=a;++i){
cout<<i<<":"<<f(i)<<endl;
}
return 0;
}
第一次发帖,各位莫见怪!

[解决办法]

C/C++ code
把代码放这里
[解决办法]
探讨
C/C++ code

把代码放这里

[解决办法]
C/C++ code
#include<iostream>using namespace std;int power(int n){//求10^nint i=1;if(n==0)return 1;for(;n>0;--n){i*=10;}return i;}int fbit(int n){//求1...9..9,1至n位数最大值包含的1的个数if(n==0){return 0;}else if(n==1){return 1;}else{return 10*fbit(n-1)+power(n-1);}}int f(int x){//求1-x包含的1的个数int bitnum=0,j,k=0;if(x==0){return 0;}if(x<10){ //x为个位数return 1;}while(1){ //求x的位数if(power(bitnum)>x){break;}else{++bitnum;}}k=fbit(bitnum-1);j=x/power(bitnum-1);k+=(j-1)*fbit(bitnum-1);k+=f(x-j*power(bitnum-1));k+=(j==1)?(x-power(bitnum-1)+1):power(bitnum-1);return k;}int main(void){//输入一个数,求1至该数包含的1的个数int a,i;cin>>a;for(i=1;i<=a;++i){cout<<i<<":"<<f(i)<<endl;}return 0;}
[解决办法]
另外,注意代码的缩进。

热点排行