| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 708 人关注过本帖
标题:蓝桥杯题解2
取消只看楼主 加入收藏
zhu_zhi
Rank: 2
来 自:广西百色
等 级:论坛游民
帖 子:129
专家分:92
注 册:2013-4-25
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:2 
蓝桥杯题解2
假设 a b c d e 代表1~9不同的5个数字(注意是各不相同的数字,且不含0)
能满足形如: ab * cde = adb * ce 这样的算式一共有多少种呢?
如:36 * 495 = 396 * 45 = 17820
我的代码如下:
#include<stdio.h>//求符合36*495=396*45的列式总数
void main()
{
    int i,t,m,q,j=0;
    int a[5];//定义一个有数组用于分别存放5个个位数
    for(i=10000;i<=99999;i++)//利用循环在所有五位数中寻找符合条件的整数i
    {
        t=i;
        m=t%10;
        q=4;
        while(t>0)//利用循环分别求出组成整数i的5个个位数;
        {
            a[q]=m;
            
            t=(t-m)/10;
            m=t%10;
            q--;
        }
        if(a[0]!=0&&a[1]!=0&&a[2]!=0&&a[3]!=0&&a[4]!=0&&a[0]!=a[1]&&a[0]!=a[2]&&a[0]!=a[3]&&a[0]!=a[4]&&a[1]!=a[2]&&a[1]!=a[3]&&a[1]!=a[4]&&a[2]!=a[3]&&a[2]!=a[4]&&a[3]!=a[4])//利用if语句将5个个位数中含0的和两两相等的整数i剔除
        {
            if((10*a[0]+a[1])*(100*a[2]+10*a[3]+a[4])==(100*a[0]+10*a[3]+a[1])*(10*a[2]+a[4])) //利用if语句将符合ab * cde = adb * ce条件的整数i找出
            {
                j=j+1;//计数器
                printf("%d\n",i);//打印符合条件的整数
            }
        
        }         
    }
    printf("符合条件的列式有:%d个\n",j);//打印结果
}
请分享,如有更简洁的方法,请展出共享。
搜索更多相关主题的帖子: include 
2014-01-09 09:55
zhu_zhi
Rank: 2
来 自:广西百色
等 级:论坛游民
帖 子:129
专家分:92
注 册:2013-4-25
收藏
得分:0 
回复 4楼 rjsp
楼主的算法好简洁!达到这种境界需要修炼了几年?
2014-01-09 16:41
zhu_zhi
Rank: 2
来 自:广西百色
等 级:论坛游民
帖 子:129
专家分:92
注 册:2013-4-25
收藏
得分:0 
回复 3楼 ljx小子
不错的算法!
2014-01-09 16:42
快速回复:蓝桥杯题解2
数据加载中...
 
   



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

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