主题:一道小学奥数题,不知是否能用c编程做出来
yijidi
[专家分:70] 发布于 2010-12-22 17:09:00
有一个六位数,它的2倍,3倍,4倍,5倍,6倍都是六位数,并且都是由它的六个位上的数组成,只是排列顺序不同,求这个六位数。
回复列表 (共5个回复)
沙发
bruceteen [专家分:42660] 发布于 2010-12-22 21:11:00
#include <stdbool.h>
#include <stdio.h>
bool foo( unsigned a, unsigned b ) // 判断两个六位数是否由相同的数字组成
{
int s[10] = { 0 };
++s[a/1%10];
++s[a/10%10];
++s[a/100%10];
++s[a/1000%10];
++s[a/10000%10];
++s[a/100000%10];
--s[b/1%10];
--s[b/10%10];
--s[b/100%10];
--s[b/1000%10];
--s[b/10000%10];
--s[b/100000%10];
for( int i=0; i<sizeof(s)/sizeof(s[0]); ++i )
{
if( s[i] != 0 )
return false;
}
return true;
}
int main()
{
for( unsigned n=100000; n<166667; ++n )
{
if( !foo(n,2*n) ) continue;
if( !foo(n,3*n) ) continue;
if( !foo(n,4*n) ) continue;
if( !foo(n,5*n) ) continue;
if( !foo(n,6*n) ) continue;
printf( "%u\n", n );
}
return 0;
}
142857
板凳
spmoon [专家分:0] 发布于 2010-12-23 01:48:00
不用编程,直接看出答案,142857
3 楼
yijidi [专家分:70] 发布于 2010-12-24 22:43:00
谢谢解答。
4 楼
浦楼ha [专家分:0] 发布于 2010-12-26 09:19:00
这儿高手很多啊,以后我要常来请教。本题142857想起一个很奇异的分数1/7,是0.142857142857...
5 楼
josephkwok [专家分:530] 发布于 2011-02-09 09:00:00
不明白这些奥数题有啥意思...
我来回复