111.第几个幸运数
枚举+数学知识
#include<bits/stdc++.h>
using namespace std;
set<long long> st;
int main()
{
for(int a=0;a<30;a++)
for(int b=0;b<22;b++)
{
if(pow(3,a)*pow(5,b)>59084709587505) break;
for(int c=0;c<17;c++)
{
if(pow(3,a)*pow(5,b)*pow(7,c)>59084709587505) break;
long long res=pow(3,a)*pow(5,b)*pow(7,c);
st.insert(res);
}
}
cout<<st.size()-1; //1不能要
return 0;
}
答案:1905
112.哪天返回
模拟
#include<bits/stdc++.h>
using namespace std;
int main()
{
int money=0,t=1;
for(int i=1;i<100;i++)
{
money+=t,t+=2;
if(money>=108)
{
cout<<i;
break;
}
}
return 0;
}
答案:11
113.猴子分香蕉
模拟
#include<bits/stdc++.h>
using namespace std;
int main()
{
for(int i=1;i<=10000;i++)
{
int n=i;
if(n%5==1)
{
n=n/5*4;
if(n%5==2)
{
n=n/5*4;
if(n%5==3)
{
n=n/5*4;
if(n%5==4)
{
n=n/5*4;
if(n!=0&&n%5==0)
{
cout<<i<<endl;
break;
}
}
}
}
}
}
return 0;
}
答案:3141
114.负数幂
115.字母阵列
枚举
#include<bits/stdc++.h>
using namespace std;
const int N = 110;
char g[N][N];
int dx[]={-1,-1,0,1,1,1,0,-1},dy[]={0,1,1,1,0,-1,-1,-1};
int res;
int main()
{
int n;
cin>>n;
for(int i=0;i<n;i++) cin>>g[i];
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
{
if(g[i][j]=='L')
{
for(int k=0;k<8;k++)
{
if(i+6*dx[k]<0||i+6*dx[k]>=n||j+6*dy[k]<0||j+6*dy[k]>=n) continue;
if(g[i+dx[k]][j+dy[k]]=='A'&&
g[i+2*dx[k]][j+2*dy[k]]=='N'&&
g[i+3*dx[k]][j+3*dy[k]]=='Q'&&
g[i+4*dx[k]][j+4*dy[k]]=='I'&&
g[i+5*dx[k]][j+5*dy[k]]=='A'&&
g[i+6*dx[k]][j+6*dy[k]]=='O'
) res++;
}
}
}
cout<<res;
return 0;
}
答案:41
116.算式900
DFS
#include<bits/stdc++.h>
using namespace std;
int res;
const int N = 15;
int path[N];
bool st[N];
void dfs(int u)
{
if(u==10)
{
if(path[0]==0||path[4]==0||path[8]==0) return;
int a=path[0]*1000+path[1]*100+path[2]*10+path[3];
int b=path[4]*1000+path[5]*100+path[6]*10+path[7];
int c=path[8]*10+path[9];
if((a-b)*c==900) printf("(%d-%d)*%d=900\n",a,b,c);
return;
}
for(int i=0;i<=9;i++)
{
if(!st[i])
{
st[i]=true;
path[u]=i;
dfs(u+1);
st[i]=false;
}
}
}
int main()
{
dfs(0);
return 0;
}
答案:(6048-5973)*12=900
117.9数算式
118.网友年龄
枚举
#include<bits/stdc++.h>
using namespace std;
int res;
int turn(int n)
{
int a=n%10,b=n/10%10;
return a*10+b;
}
int main()
{
for(int i=10;i<100;i++)
if(i-27==turn(i)) printf("%d\n",i),res++;
cout<<res;
return 0;
}
答案:7
119.报纸页数
手算
/*
(1)例子
(11-6-1)/4=1 所以有一张纸
(5-1)/2=2所以有两张纸
1+2+本身1=4张纸,一张纸4页,所以一共16页
(2)问题
(1727-1126-1)/4 150
(1125-1)/2 562
150+562+1=713 713*4=2852页
/*
答案:2852
120.平方怪圈