程序书海码农的世界程序员

蓝杯三十四

2018-01-30  本文已影响10人  逍遥_9353

算法训练 猴子分苹果 

时间限制:1.0s  内存限制:256.0MB

提交此题   

问题描述

  秋天到了,n只猴子采摘了一大堆苹果放到山洞里,约定第二天平分。这些猴子很崇拜猴王孙悟空,所以都想给他留一些苹果。第一只猴子悄悄来到山洞,把苹果平均分成n份,把剩下的m个苹果吃了,然后藏起来一份,最后把剩下的苹果重新合在一起。这些猴子依次悄悄来到山洞,都做同样的操作,恰好每次都剩下了m个苹果。第二天,这些猴子来到山洞,把剩下的苹果分成n分,巧了,还是剩下了m个。问,原来这些猴子至少采了多少个苹果。

输入格式

  两个整数,n m

输出格式

  一个整数,表示原来苹果的数目

样例输入

5 1

样例输出

15621

数据规模和约定

  0<m<n<9

#include<iostream> 

#include<cstring> 

#include<cmath> 

using namespace std;

int main()

{

int monkey, apple;

long long int sum;

cin >> monkey >> apple;

sum = pow(monkey, monkey + 1) - (monkey - 1)*apple;

cout << sum << endl;

return 0;

}

思路分析:

①定义变量:猴子数量,剩下苹果数量,原来苹果数量;

②输入猴子数量及剩下苹果数量;

③递归求出原来苹果数量;

④输出原来苹果数量。

算法训练 完数 

时间限制:1.0s  内存限制:512.0MB

提交此题   

问题描述

  一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如,6的因子为1、2、3,而6=1+2+3,因此6就是“完数”。又如,28的因子为1、2、4、7、14,而28=1+2+4+7+14,因此28也是“完数”。编写一个程序,判断用户输入的一个数是否为“完数”。

  输入格式:输入只有一行,即一个整数。

  输出格式:输出只有一行,如果该数为完数,输出yes,否则输出no。

  输入输出样例

样例输入

6

样例输出

yes

#include <cstdio>   

int FacSum(int n) 

    int sum = 0, i; 

    for(i = 2; i <= n / 2; i++) 

    { 

        if(n % i == 0) 

        { 

            sum += i; 

        } 

    } 

    return sum + 1; 

 

int main() 

{   

    int n, i, sum; 

    scanf("%d", &n); 

    if(n == 1) 

    { 

        printf("no\n"); 

        return 0; 

    } 

    sum = FacSum(n); 

    if(sum == n) 

        printf("yes\n"); 

    else 

        printf("no\n"); 

    return 0; 

思路分析:

①定义变量:一个整数n,循环次数;

②输入一个整数;

③分两种情况:一为当n为1时;二用函数调用,调用参数n:

(1)定义变量:循环次数,一个数(初始化为0);

(2)用for语句循环(因子从2开始循环),用if语句判断n(整数)/i(因子)是否为0,如果为0,则累加因子;

(3)最后返回值为得到的数加1(1是任何除0外的数的因子);

④判断所返回的数是否与输入的整数相等,如果相等输出“yes”,否则输出“no”。

上一篇下一篇

猜你喜欢

热点阅读