目录
题目一: 编辑
代码:
题目二:
代码:
题目三:
代码:
题目四:
代码:
题目五:
代码:
题目六:
代码七:
题目八:
代码:
题目九:
代码:
题目一:
代码:
#include<iostream>//统计2出现过的次数
using namespace std;
int main()
{
int cnt=0;
for(int i=1;i<=2020;i++)
{
int x=i;
while(x)
{
if(x%10==2)
cnt++;
x/=10;
}
}
cout<<cnt;
}
题目二:
代码:
#include <iostream>//统计有一共有多少天,再看有几周
using namespace std;
int res;
//先判断润年
bool is_r(int n){
if((n % 4 == 0 && n % 100 != 0) || n % 400 == 0)
return true;
return false;
}
int main(){
for(int i = 1901;i <= 2000;i ++)
if(is_r(i)) res += 366;
else res += 365;
int x = res / 7;
cout << x << endl;
return 0;
}
题目三:
代码:
#include <iostream>//因为一组2*5会得到0,统计2、5个数,取少的
using namespace std;
int main()
{
int cnt2=0,cnt5=0;
for (int i=1;i<=10;i++)
{
for (int j=1;j<=10;j++)
{
int x;
cin>>x;
while (x%2==0) cnt2++,x/=2;
while (x%5==0) cnt5++,x/=5;
}
}
cout<<min(cnt2,cnt5)<<'\n';
return 0;
}
题目四:
代码:
#include <iostream>//即位16进制,大于等于10的一位用字母表示
using namespace std;
int main()
{
for(int i=2022;;i++)//从2022开始循环
{
int a=i;
int flag=1;
while(a)
{
if(a%16<10)//有一位小于10,即不是字母表示,就跳出
{
flag=0;
break;
}
a/=16;//16进制
}
if(flag==1)
{
cout<<i;
break;
}
}
return 0;
}
题目五:
代码:
#include<iostream>
#include<cstring>
using namespace std;//相当于26进制
int main()
{
int a1=0, a2=0, a3=0;
char a[30] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
for (int i = 1; i <= 2022; i++)
{
a3++;
if (a3 > 26)
{
a3 = 1;
a2++;
if (a2 > 26)
{
a2 = 1;
a1++;
}
}
}
//cout<<a1<<" "<<a2<<" "<<a3;
cout << a[a1 - 1] << a[a2 - 1] << a[a3 - 1];
}
题目六:
代码七:
#include <iostream>
using namespace std;
int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int sum(int n)//求和
{
int ans=0;
while(n)
{
ans+=n%10;
n/=10;
}
return ans;
}
int main()
{
long long ans=0;
int day=0;
for(int i=1900;i<=9999;i++)//遍历年
{
if((i%4==0 && i%100!=0)||i%400==0)//判断是否闰年
a[2]=29;
else
a[2]=28;
for(int j=1;j<=12;j++)//遍历月
{
for(int k=1;k<=a[j];k++)//遍历天
{
if(sum(i)==sum(j)+sum(k))
ans++;
}
}
}
cout<<ans;
return 0;
}
题目八:
代码:
#include <iostream>//直接遍历
using namespace std;
int main()
{
int a[]={99,22,51,63,72,61,20,88,40,21,63,30,11,18,99,12,93,16,7,53,64,9,28,84,34,96,52,82,51,77};
int ans=0;
for(int i=0;i<=29;i++)
{
for(int j=i+1;j<=29;j++)
if(a[i]*a[j]>=2022)
ans++;
}
cout<<ans;
return 0;
}
题目九:
代码:
#include <iostream>//借助dfs思想
using namespace std;
int arr[30][60] = { 0 };
char array1[30][60];
int cnt = 0;
void dfs(int x, int y)
{
if (array1[x][y] == '1' && arr[x][y] == 0)//没访问过,且为1
{
arr[x][y] = 1;
cnt++;
if (x < 29)
dfs(x + 1, y);
if (x > 0)
dfs(x - 1, y);
if (y < 59)
dfs(x, y + 1);
if (y > 0)
dfs(x, y - 1);
}
}
int main()
{
int max = -1, i, j;
for (i = 0; i < 30; i++)
{
for (j = 0; j < 60; j++)
cin >> array1[i][j];
}
for (i = 0; i < 30; i++)
{
for (j = 0; j < 60; j++)
{
dfs(i, j);
if (cnt > max)
max = cnt;
cnt = 0;
}
}
cout << max;
return 0;
}