【蓝桥杯】暴力枚举

1.立方变自身(简单枚举)
2.三羊献瑞
3.加法变乘法

1.立方变自身(简单枚举)
题目:观察下面的现象,某个数字的平方,按位累加仍然等于自身
1^3=1
8^3=512 , 5+1+2=8
17^3=4913 , 4+9+1+3=17

请你计算包括1,8,17在内,符合这个性质的正整数一共有多少个?
解题思路
按照题目要求循环遍历,满足要求则+1,不确定的是循环的范围,
先假设1-100,再1-1000,发现结果没变化

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int ans=0;
    for(int i=1;i<=100;i++)
	{
		int a=i*i*i;
		int sum=0;
		while(a)
		{
			sum+=a%10;
			a/=10;
		}
		if(sum==i) ans++;
	} 
	cout<<ans<<endl;
}

2.三羊献瑞
在这里插入图片描述
解题思路

  1. 由于 "三"是数字的首位,低位的数字进位后必然为1,所以能先确定 “三”为1。
  2. 声明变量a,b,c,d,f,g,h。(分别代表:祥,瑞,生,辉,羊,献,气)。
  3. 题目要求求出三羊献瑞,即(1,f,g,b)。
#include<bits/stdc++.h>
using namespace std;
int main()
{
	int a,b,c,d,e,f,g,h;
	int num1,num2,sum;
	for(int a=2;a<=9;a++)
		for(int b=0;b<=9;b++)
			for(int c=0;c<=9;c++)
				for(int d=0;d<=9;d++)
					for(int e=0;e<=9;e++)
						for(int f=0;f<=9;f++)
							for(int g=0;g<=9;g++)
								for(int h=0;h<=9;h++)
								{
									if(a!=b&&a!=c&&a!=d&&a!=e&&a!=f&&a!=g&&a!=h&&
									b!=c&&b!=d&&b!=e&&b!=f&&b!=g&&b!=h&&
									c!=d&&c!=e&&c!=f&&c!=g&&c!=h&&
									d!=e&&d!=f&&d!=g&&d!=h&&
									e!=f&&e!=g&&e!=h&&
									f!=g&&f!=h&&
									g!=h&&
									a!=1&&b!=1&&c!=1&&d!=1&&e!=1&&f!=1&&g!=1&&h!=1)
									{
										num1=a*1000+b*100+c*10+d;
										num2=1*1000+f*100+g*10+b;
										sum=1*10000+f*1000+c*100+b*10+h;
										if(sum==(num1+num2)) 
										{
											cout<<1<<f<<g<<b<<endl;
											break;
										}
									}
								}
	
}

3.加法变乘法
我们都知道:1+2+3+… + 49 = 1225
现在要求你把其中两个不相邻的加号变成乘号,使得结果为2015
比如:
1+2+3+…+1011+12+…+2728+29+…+49 =2015
就是符合要求的答案。
请你寻找另外一个可能的答案,并把位置靠前的那个乘号左边的数字提交(对于示例,就是提交10)。
解题思路
用1225和2015分别减去两个位置的数后比较是否相等,结果得10,16

#include<bits/stdc++.h>
using namespace std;
int main()
{
	for(int i=1;i<49;i++)
		for(int j=i+1;j<=49;j++)
		{
			int a1=1225-i-(i+1)-j-(j+1);
			int a2=2015-i*(i+1)-j*(j+1);
			if(a1==a2) cout<<i<<" "<<j<<endl;
		}
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值