1、MT1140数字7
输入一个整数N,判断它是不是整数7的和、差之类的。(比如某数等于7+7, 或者7-7,或者7-7-7+7+7…)是则输出YES否则或者NO。
格式
输入格式:
输入为整型
输出格式:
输出为YES或者NO
样例 1
输入:
14
输出:
YES
解决思路
这个看题目是说是否是加减法,但是实质上只需要查看是否是7的倍数,实现的时候就只需要查看是否能被7整除即可。
实现代码
#include<bits/stdc++.h>
using namespace std;
int main( )
{
int N;
cin >> N;
if(N%7==0){
cout << "YES";
}else{
cout << "NO";
}
return 0;
}
2、MT1142整除的总数
输入正整数N和M,其中N<=M。求区间[N,M]中可被K整除的总数。
格式
输入格式:
输入正整数N,M和K,空格分隔。
输出格式:
输出整型
样例 1
输入:
6 15 3
输出:
4
解决思路
这里得用到循环语句for语句,计数从N开始到M,然后设置一个计数器count,初值设为0,然后在这个循环语句中判断能否被K整除。
实现代码
#include<bits/stdc++.h>
using namespace std;
int main( )
{
int N,M,K,count=0;
scanf("%d %d %d",&N,&M,&K);
for(int i=N;i<=M;i++){
if(i%K==0){
count++;
}
}
printf("%d",count);
return 0;
}
3、MT1144整除
输入正整数N,检查它是否可以被其数字之和整除,输出YES或者NO。不考虑不合理的输入等特殊情况。
格式
输入格式:
输入正整数N
输出格式:
输出YES或者NO
样例 1
输入:
18
输出:
YES
解决思路
首先设置一个计数变量count=0,然后通过求余2和除法计算出输入数的个数,再使用一个循环语句计算输入数各位和,最后使用一个选择语句判断输入数能否整除该数各位数之和。这里需要着重理解“它是否可以被其数字之和整除”这句话,刚开始我就理解错了,无法输出结果;然后我又找不出代码中其他的错误,所以我就重新理解了这句话,才发现是理解反了,所以我就修改过来,最终实现了题目要求。
实现代码
#include<bits/stdc++.h>
using namespace std;
int main( )
{
int N,sum=0;
cin >> N;
int A=N,C=N,count = 0;
while(A%10!=0){
count++;
A/=10;
}
// cout << A << N << count;
for(int i=1;i<=count;i++){
int B = N%10;
// cout << B << endl;
sum+=B;
N/=10;
}
if(C%sum==0){
cout << "YES";
}else{
cout << "NO";
}
return 0;
}
可以看到我的代码中,偶尔会有好多注释掉的输出语句,这个是我在输出错误的时候,一句一句检查的。在实际做题的时候,这种方法检查错误对我来说还是挺有效的。
4、MT1146孙子歌诀
存在一个数x,除以3余2,除以5余3,除以7余2,然后求这个数。明朝数学家程大位将解法编成易于上口的《孙子歌诀》:
三人同行七十稀,
五树梅花廿一支,
七子团圆正半月,
除百零五使得知。
3人同行“70” 稀,3的余数乘以70,5树梅花“21”支,5的余数乘以21,7子团圆正半月(15天),7的余数乘以15。最后加在一起除以105看余数。
格式
输入格式:
无
输出格式:
输出整型
样例 1
输入:
无
输出:
23
解决思路
这里还是需要给输入数输入一个初值,然后通过循环语句while(使用while比for更方便),在循环语句中使用一个选择语句if语句寻找满足要求的值,找到之后直接跳出循环,题目完成。
实现代码
#include<bits/stdc++.h>
using namespace std;
int main( )
{
int x = 1;
while(x++){
if(x%3==2&&x%5==3&&x%7==2){
cout << x;
break;
}
}
return 0;
}
明天继续吧。