标题:c语言数学题
取消只看楼主
leetom
Rank: 1
等 级:新手上路
帖 子:7
专家分:2
注 册:2009-6-16
结帖率:100%
已结贴  问题点数:20 回复次数:3 
c语言数学题
    某人购买的体育彩票猜中了4个号码,这4个号码按照从大到小的顺序组成一个数字可被11整除,将其颠倒过来也可被11整除,编写函数求符合这样条件的4个号码。可被11整除颠倒过来也可被11整除的正整数例如341,它可被11整除,颠倒过来143也可被11整除。体育彩票采用整数1、2、3、……、36表示36种体育运动。
这个要怎么做??难道要4曾循环挨个试?
求高手解答~
搜索更多相关主题的帖子: c语言 数学题 
2009-08-27 18:23
leetom
Rank: 1
等 级:新手上路
帖 子:7
专家分:2
注 册:2009-6-16
得分:0 
以下是引用pangding在2009-8-27 22:24的发言:
能被11整除的数的特点是:奇位上数的和 与 偶位上数的和 的差 是11的倍数(0也行)。
比如你说的341,(一般是从右数)奇位上的数是 1 和 3 ,和是4。偶位上是4。它们的差是4-4=0。因此它是341是11的倍数。
如果有这规律 ...
版主的方法好~但是我感觉这里不好用。。。。还是穷举吧~
程序代码:
#include "stdio.h"
#include <math.h>
#include <stdlib.h>
main()
{
    int n[4],i,digit[8],digit_all,digit_left;
    int mul[4];
    long num,num_turn;
    for (n[0]=1;n[0]<=36;n[0]++)
        for (n[1]=1;n[1]<n[0];n[1]++)
            for (n[2]=1;n[2]<n[1];n[2]++)
                for (n[3]=1;n[3]<n[2];n[3]++)
                    {num=num_turn=0;
                     for (i=0;i<4;i++)
                        {if (n[i]>=10) mul[i]=2;
                         else mul[i]=1;
                        }
                     num=n[0]*pow(10,(mul[1]+mul[2]+mul[3]))+
                     n[1]*pow(10,(mul[2]+mul[3]))+n[2]*pow(10,mul[3])+n[3];
                     if(num%11==0)
                        {                    
                         digit_all=mul[0]+mul[1]+mul[2]+mul[3];
                        
                         for (i=0,digit_left=num;i<digit_all;i++)
                             {digit[i]=digit_left%10;
                              digit_left=digit_left/10;
                             }
                         for (i=0;i<digit_all;i++)
                             {num_turn=num_turn+digit[i]*pow(10,(digit_all-i-1));
                             }
                         if(num_turn%11==0)
                            {printf("zhengxu %ld\t",num);
                             printf("daoxu %ld\n",num_turn);
                             for (i=0;i<4;i++)
                                 printf("%d\t",n[i]);
                              printf("\n");
                              }
                       
                        }
                    }
     
}
2009-08-27 23:37
leetom
Rank: 1
等 级:新手上路
帖 子:7
专家分:2
注 册:2009-6-16
得分:0 
以下是引用pangding在2009-8-27 22:24的发言:
能被11整除的数的特点是:奇位上数的和 与 偶位上数的和 的差 是11的倍数(0也行)。
比如你说的341,(一般是从右数)奇位上的数是 1 和 3 ,和是4。偶位上是4。它们的差是4-4=0。因此它是341是11的倍数。
如果有这规律 ...
我感觉不能重吧~如果能重就在加上=~

这个程序有问题~谁能改一下~
把if(num_turn%11==0)改为if(num_turn%11!=0)输出的逆序数都是错的~
应该是不输出的吧~

2009-08-28 00:05
leetom
Rank: 1
等 级:新手上路
帖 子:7
专家分:2
注 册:2009-6-16
得分:0 
竟然今天就没问题了。。。。。谢ls几位~
2009-08-28 11:57



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-283885-1-1.html




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

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