P1008 [NOIP1998 普及组] 三连击优质解答

#include <stdio.h>
int main()
{
    int a,b,c;
    for(a=123;a<=333;a++)
            {
                b=a*2;
                c=a*3;
                if((a/100+a/10%10+a%10+b/100+b/10%10+b%10+c/100+c/10%10+c%10==1+2+3+4+5+6+7+8+9)&&((a/100)*(a/10%10)*(a%10)*(b/100)*(b/10%10)*(b%10)*(c/100)*(c/10%10)*(c%10)==(1)*(2)*(3)*(4)*(5)*(6)*(7)*(8)*(9)))
                    printf("%d %d %d\n",a,b,c);
            }
    return 0;
}

上面是题解最优,思路就是两集合内元素各自相加相乘都相等,则这两集合相同个人总结:

因为只有三位数,故

a/100,取最左边数字

a/10%10,取中间数字

a%10 取最右边数字


#include<stdio.h>
#include<stdio.h>
int main()

{
	int a,b,c,d,e,f,g,h,k;
	int i,n;
	int number1,number2,number3;
	
	
		for(a=1;a<10;a++){
		for(b=1;b<10;b++){
			for(c=1;c<10;c++){
				for(d=1;d<10;d++){
					for(e=1;e<10;e++){
						for(f=1;f<10;f++){
							for(g=1;g<10;g++){
								for(h=1;h<10;h++){
									for(k=1;k<10;k++){
										if(a!=b&&a!=c&&a!=d&&a!=e&&a!=f&&a!=g&&a!=h&&a!=k&&
										b!=c&&b!=d&&b!=e&&b!=f&&b!=g&&b!=h&&b!=k&&
										c!=d&&c!=e&&c!=f&&c!=g&&c!=h&&c!=k&&
										d!=e&&d!=f&&d!=g&&d!=h&&d!=k&&
										e!=f&&e!=g&&e!=h&&e!=k&&
										f!=g&&f!=h&&f!=k&&
										g!=h&&g!=k&&
										h!=k){
											if(2*(g*100+h*10+k)==(d*100+e*10+f)&&
											(a*100+b*10+c)==3*(g*100+h*10+k)){
												printf("%d %d %d\n",(g*100+h*10+k),(d*100+e*10+f),(a*100+b*10+c));
											}
										}
									}
								}
							}
						}
					}
				}
			}
		}
	}
	
	
	
	
	
 } 

这是我的傻瓜式题解,交上去还是超时了,直接暴力题解 。就像是恺翁的买糖果种类得到启发。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值