开始: 2022-04-05 19:00:00

2022年4月双周赛(初级班)

结束: 2022-04-05 21:30:00
当前: 2025-0505-3131 09:43:27  类型:OI 状态:已经结束 

A. 失踪的7

题目的意思解释一下就是求n以内含有7的数字的个数,然后用n减去该个数即可。这道题的核心思想和790 - 循环基础-数位分解是类似的(如果不熟悉可以复习此题),就是将每一位拆分出来然后判断是否为7,如果为7那这个数就需要被删去。具体写法见代码。

#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,cnt=0;//cnt存储含7的数字的个数
cin>>n;
for(int i=1;i<=n;i++)
{
int x=i;
while(x)
{
int t=x%10;//求这一位数
if(t==7)
{
cnt++;//如果含有7,cnt++
break;
}
x=x/10;
}
}
cout<<n-cnt;
return 0;
}

 

B. 小鱼的数字游戏

这道题的思路很简单,用一个数组将每个数存起来,再从后往前输出即可。难点在于这道题目没有给出n的大小,很多同学不知道怎么判断输入是否结束。

其实这种输入是一个典型的多组数据问题,具体可通过461 - 循环基础-多组数据1来进行复习。将数据输入数组后,想要进行从后往前的输出,只需要将for循环内的语句从0~n-1改为n-1~0,而不需要进行复杂的swap等操作。具体实现见代码。

#include<bits/stdc++.h>
using namespace std;
int main()
{
int a[110];
int n=0;
while(cin>>a[n])
{
n++;
}
for(int i=n-1; i>=0; i--)
{
cout<<a[i]<<" ";
}
return 0;
}

 

C. 吃桃子

一道循环基础题,理解题意后就比较简单,每次循环体内+1后再*2即可,注意循环次数是n-1次不是n次。

#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,s = 1;
cin>>n;
for(int i = 1; i < n; i++)
{
s++;
s*=2;
}
cout<<s<<endl;
return 0;
}

 

D题见讲解视频。