| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2028 人关注过本帖, 2 人收藏
标题:一道数字游戏题,找出具有此特性的9位数
取消只看楼主 加入收藏
vdestroyer
Rank: 2
等 级:论坛游民
帖 子:136
专家分:14
注 册:2009-1-7
结帖率:96.43%
收藏(2)
已结贴  问题点数:30 回复次数:2 
一道数字游戏题,找出具有此特性的9位数
我们要找出一个数字,符合以下两个条件:
其一:
一个9位的数字,每一位上各有1至9当中的一个数字。也就是说,每一位上的数字不和其它位上的数字重复。

其二:
例如数字 342615987
3    除以 1 可以被整除
34   除以 2 可以被整除
342  除以 3 可以被整除
3426 除以 4 不可以被整除
也就是说,数字 342615987 并不符合我们的条件。


为了方便大家检验,给出答案: 381654729

编程序找出符合上述两个条件的数字。
程序代码:
#include <stdio.h>
#include <conio.h>

int check(long long n)
{
    int i;
    char temp[10]={0};
    long long z, d, delare=100000000;
    z=n;
    
    for(i=1;i<10;i++)
    {
        //d=(int)(z/delare);
        d=z/delare;
        delare=delare/10;
        if(!(d/i==0))
        {
            return 0;
        }
    }
    for(;n;n/=10)
    {
        if(++temp[n%10]>1) return 0;
    }
    return 1;
}

int main (void)
{
    int i, j;
    long long a;
    
    for(a=100000000;a<999999999;a++)
    {
        if(check(a)==1) printf("%d\n");
    }
    getch();
}




这是我写的程序,我没发现任何错误啊?一运行为什么结果显示不出来?
搜索更多相关主题的帖子: 数字游戏 
2009-08-12 04:29
vdestroyer
Rank: 2
等 级:论坛游民
帖 子:136
专家分:14
注 册:2009-1-7
收藏
得分:0 
回复 3楼 godbless

我在顶楼贴的程序确实有算法漏洞,而且,就算没有,也要运行好几个小时才能算出来,太慢了。
我正在用你说的思路重新写程序。。。
2009-08-12 20:33
vdestroyer
Rank: 2
等 级:论坛游民
帖 子:136
专家分:14
注 册:2009-1-7
收藏
得分:0 
花了不少时间,还是没写对,谁能帮我写一个啊?
或者帮我改一下这个也好


这是我写的错的程序
程序代码:
#include <stdio.h> 
#include <conio.h> 

 
int check(int n[]) 
{ 
    int k; 
    long long sum = 0; 

 
    for(k = 1; k < 10; k++) 
    { 
        sum = sum + n[k]; 
        //printf("%d %d\n",sum, k); 
        //检查能否被整除
        if(sum % k != 0) {return 0;} 
        sum = sum * 10; 
        //printf("%I64d %d\n",sum/10, k); 
    } 
    return 1; 
} 

 
// The answer is: 381654729 
int main (void) 
{ 
    int i, k, m, r, s, tmp; 
    int j = 0; 
    int Count = 1; 
    int v[10] = {100,1,2,3,4,5,6,7,8,9}; // The posistion v[0] will never be used 
    //long long a; 

 
     
    j = 0; 
    for(i = 1; i <= 10; i++) 
    { 
         
        if(v[9-j] > v[8-j]) 
        { 
            if(v[9-j] == 9 && j != 0) 
            { 
                //v[8-j] change place with v[9] 
                tmp = v[8-j]; 
                v[8-j] = v[9]; 
                v[9] = tmp; 
                j = 0; 
            } 
            else 
            { 
                tmp = v[9-j]; 
                v[9-j] = v[8-j]; 
                v[8-j] = tmp; 
                j = 0; 
            } 
             
             
            while((9-j) <= 7) 
            { 
                // bubbelsorting 
                for(r = 1; r < j; r++) 
                { 
                    for(s = j-1; s >= r; s--) 
                    { 
                        if(v[s] < v[s-1]) 
                        { 
                            tmp = v[s-1]; 
                            v[s-1] = v[s]; 
                            v[s] = tmp; 
                        } 
                    } 
                } 
            } 
        } 
        else 
        { 
            j++; 
        } 
     
        if(check(v))  
        { 
            for(k = 1; k < 10; k++) 
            { 
                printf("%d",v[k]); 
            } 
        } 
         
         
         
        for(k = 1; k < 10; k++) 
        { 
            printf("%d",v[k]); 
        } 
        printf("\n\n"); 
         
    } 
    getch(); 
} 
2009-08-15 19:30
快速回复:一道数字游戏题,找出具有此特性的9位数
数据加载中...
 
   



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

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