回 帖 发 新 帖 刷新版面

主题:一道小学奥数题,不知是否能用c编程做出来

有一个六位数,它的2倍,3倍,4倍,5倍,6倍都是六位数,并且都是由它的六个位上的数组成,只是排列顺序不同,求这个六位数。

回复列表 (共5个回复)

沙发

#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

板凳

不用编程,直接看出答案,142857

3 楼

谢谢解答。

4 楼

这儿高手很多啊,以后我要常来请教。本题142857想起一个很奇异的分数1/7,是0.142857142857...

5 楼

不明白这些奥数题有啥意思...

我来回复

您尚未登录,请登录后再回复。点此登录或注册