HNU程序设计 练习五-函数

1.小熊买糖果

【问题描述】

       小熊去到商店,选择了一种它非常喜欢的糖果,其单价为 元,假定商店里有无穷多的这种糖果。

       它的父亲允许它花费任意多的10元硬币和一个 元硬币去购买,但不能找零,请帮助小熊确定它能购买的最少数量的糖果是多少?
【输入形式】

       输入为一行两个整数 和 (1≤ ≤1000,1≤  ≤9),分别表示糖果的价格以及小熊手里的单独硬币的币值。
【输出形式】

       输出为一个数,表示小熊在不找零的情况下所能购买糖果的最小数量。
【样例输入1】

117 3

【样例输出1】

9

【样例输入2】

10 3

【样例输出2】

1
//小熊买糖果
//小熊去到商店,选择了一种它非常喜欢的糖果,其单价为 k 元,假定商店里有无穷多的这种糖果。
//
//       它的父亲允许它花费任意多的10元硬币和一个 r 元硬币去购买,但不能找零,请帮助小熊确定它能购买的最少数量的糖果是多少?
#include  <iostream>

using  namespace  std;
int  getCandy(int,  int);

int  main()
{
    int  k,  r;
	cin>>k>>r;
	int result=getCandy(k,r);
    cout<<result<<endl;
    return  0;
}

int  getCandy(int k,int r){
	int res=1;
	int s=k;
	while(s%10!=0 && (s-r)%10!=0){ //要么没用零钱全是10,要么用了零钱 
		s+=k;
		res+=1;
	}
	return res;
} 

2.最大公约数和最小公倍数 

【问题描述】

        从键盘输入两个正整数,求他们的最大公约数和最小公倍数。
【输入形式】

        输入为一行,两个正整数
【输出形式】

        输入为一行,表示这两个正整数的最大公约数和最小公倍数
【样例输入】

15 125

【样例输出】

5 375
//最大公约数和最小公倍数
//从键盘输入两个正整数,求他们的最大公约数和最小公倍数。
#include  <iostream>

using  namespace  std;
int gcd(int,int);
int lcm(int,int);
int  main()
{
        int  x,y;
        cin>>x>>y;
        cout<<gcd(x,  y)<<"  "<<lcm(x,y)<<endl;
        return  0;
}

int  gcd(int  u,  int  v)                        
{
	if(u<v){
		int tem=u;
		u=v;
		v=tem; //大的除以小的
	}
	int m=u%v;
	while(m!=0){
		u=v;
		v=m; //辗转相除法
		m=u%v;
	}
	return v;
}
int lcm(int u,int v)                                                                                    
{
	 //最小公倍数等于两数乘积除以最大公约数
        return  u*v/gcd(u,v);
}

3.我爱数学,我爱编程,我更爱多文件编程

【问题描述】

          从键盘输入任意多个正整数,判断其中有多少个素数和回文数?

【输入形式】

          输入任意多个正整数,输入使用ctrl^Z结束。
【输出形式】

          输出为两个整数,分别表示输入的若干个数中,素数、回文数的个数。

【样例输入】

11 121 7

【样例输出】

2 3
#include"judge.h"
//从键盘输入任意多个正整数,判断其中有多少个素数和回文数?
bool prime(int a){
    if(a<2){
        return false;
    }else if(a==2){
        return true;
    }
    for(int i=2;i<=a/2+1;i++){
        if(a%i==0){
            return false;//是不是素数
        }
    }
    return true;
}
bool plalindrome(int a){
    int res=0;
    int t=a;
    while(a>0){
        int y=a%10; //是不是回文数
        a/=10;
        res*=10;
        res+=y;  //直接反转数字
    }
    if(res==t){
        return true;
    }else{
        return false;
    }
}

4.杨辉三角 

【问题描述】

          输入层数 n,打印 n 层杨辉三角
【输入形式】

输入为一行一个整数 n

 【输出形式】

输出 n 层杨辉三角

【样例输入】

5

【样例输出】

    1

   1 1

  1 2 1

 1 3 3 1

1 4 6 4 1

提示:杨辉三角的每一行对应为二项式系数,且有公式 

#include"yang.h"
#include<iostream>
//输入层数 n,打印 n 层杨辉三角
using namespace std;
void PrintBlank(int num){
    for(int i=1;i<=num;i++){
        cout<<" "; //打印空格,第一个数前面的
    }
}
void PrintCombine(int n){
    n-=1;
    int *arr=new int[n+1];
    arr[0]=1;
    cout<<arr[0]<<" "; 
    for(int i=1;i<=n;++i){
        arr[i]=arr[i-1]*(n-i+1)/i; //利用杨辉三角的每一行对应为二项式系数,且有公式 
        cout<<arr[i]<<" ";
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值