假期刷题打卡--Day14

1、MT1140数字7

输入一个整数N,判断它是不是整数7的和、差之类的。(比如某数等于7+7, 或者7-7,或者7-7-7+7+7…)是则输出YES否则或者NO。

格式

输入格式:

输入为整型

输出格式:

输出为YES或者NO

样例 1

输入:

14

输出:

YES
解决思路

这个看题目是说是否是加减法,但是实质上只需要查看是否是7的倍数,实现的时候就只需要查看是否能被7整除即可。

实现代码
#include 

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 

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 

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 

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;
}

 

明天继续吧。

你可能感兴趣的:(假期打卡学习,算法,c++,数据结构,c语言)