----------------解决方案--------------------------------------------------------
哦,我还忽略了一个问题,最高位不能为0,我给你写个源程序,不能重复的
----------------解决方案--------------------------------------------------------
#include<stdio.h>
int main()
{
long i,sum;
for(i=1,sum=0;i<=99999999;i++)
{
if(i%2!=0)sum++;
else continue;
}
printf("the total is %d",sum);
getch();
}
可以重复的
----------------解决方案--------------------------------------------------------
可以重复的,我会算的,就是不能重复的,我就想不出来了~~~
----------------解决方案--------------------------------------------------------
#include"stdio.h"
long arrange(int a,int b)
{
int i;
long s=1;
for(i=1;i<=b;i++,a--)
s*=a;
return s;
}
int main()
{
long sum=4; //初始化SUM为一位时奇数的个数
int i;
for(i=2;i<8;i++)
sum+=4*6*arrange(6,i-2); //4是个位可能的情况,6是最高位可能的情况,所面的是中间的数可能的情况
printf("%ld",sum);
return 0;
}
[此贴子已经被作者于2007-4-14 14:32:07编辑过]
----------------解决方案--------------------------------------------------------
思路,0--7组成的数可以看成是8进制的数,那么1-8位所有的8进制数的个数就是8个8,又因为奇数跟偶数的个数一样,那么就是8进制最大数/2,再换算成10进制就是答案,不知道对不对
----------------解决方案--------------------------------------------------------
以下是引用iwfy在2007-4-14 14:27:33的发言:
思路,0--7组成的数可以看成是8进制的数,那么1-8位所有的8进制数的个数就是8个8,又因为奇数跟偶数的个数一样,那么就是8进制最大数/2,再换算成10进制就是答案,不知道对不对
思路,0--7组成的数可以看成是8进制的数,那么1-8位所有的8进制数的个数就是8个8,又因为奇数跟偶数的个数一样,那么就是8进制最大数/2,再换算成10进制就是答案,不知道对不对
他说过 不能重复哈 你这样是把所有的奇数都算出来拉
----------------解决方案--------------------------------------------------------
我认为分为三样看 高位 低位 中间位
因为要是奇数 所以低位有1,3,5,7四种 又因为不能重复 所以高位有6种(除去0)
用一个算法把中间的求出来 中间又有几种情况0,1,2,3,4,5,6种
用排列组合 求出来 就这样
----------------解决方案--------------------------------------------------------
我刚刚用数学推算了一下.
把推算过程给大家看一下.
为奇数的结尾是除2了还余的.,那么这8个数里面就只有4个数结尾则可以成为奇数.
我先以个为数组成的奇数是4个.
然后两位的.
0不能做十位.所以只能算6位做十位.
三位数的时候0又可以插进来了(零这时可以做十为了.而且可以做6个数的十位).但是绝对不可以把0-7看成1-8..概念不同啊.
比如.
设置几个三位数.201,301,401,501,601,701.如果是其他的三位数的话,比如231,241,251,261,271,281,291.我们可以写成321.421,521,621,721,821,921.这就说.当三位数时候.我们本来可以把一组非零的数列出来时.乘以2就可以得到变换方位奇数.而有零的数是不可以互换位置的.因为零不可以做百位.做了百位的话.就等于是二位.那么重复..
虽然15楼的程序写的不错.但是对于这题目而言是不对的.
至于算法怎么写.我现在还没找到规律.只是写出了自己的一点想法
----------------解决方案--------------------------------------------------------
#include "stdio.h"
main()
{float i,s=1,sum=0,SUM=4;
for(i=6;i>=1;i--)
{s=s*i;
sum=sum+s;
}
SUM=SUM+4*6*sum;
printf("%f",SUM);
}
不知道这个对不对,哈哈。
----------------解决方案--------------------------------------------------------