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。
- 声明变量a,b,c,d,f,g,h。(分别代表:祥,瑞,生,辉,羊,献,气)。
- 题目要求求出三羊献瑞,即(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;
}
}