1740 - 换零钱 [1*]

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 128 MB

某人想将手中的一张面值 100 元的人民币换成 5 元、 1 元和 0.5 元面值的票子,但要求换正好 100 张,且每种票子至少一张。问:有几种换法?
 
提示: 用三重循环。想一想如何减少循环的次数。
5 元、 1 元和 0.5 元最多各需要几张。记得要求正好换 100 张,总价值100元。
循环变量代表某个币种的张数。

题目输入

题目输出

输入/输出样例

输入格式


                        

输出格式


                        

C语言解答

#include <stdio.h>
int main()
{
    double i,j,z;
    int count=0;
	for(i=1;i<97;i++){
		for(j=1;j<97;j++){
			for(z=1;z<97;z++){
				if((5*i+j+0.5*z==100)&&(i+j+z==100)){
					count++;
				
				}
			}
		}
	}
	printf("%d",count);
	return 0;
}

C++解答

#include<iostream>
using namespace std;
int main()
{
    int sum=0;
    for(int i=1;i<=19;i++)
      for(int j=1;j<=99;j++)
      {
        if(i*5+j+(100-i-j)*0.5==100)sum++;
      }
    cout<<sum<<endl;
    return 0;
}

Java解答

import java.util.*;
public class Main{
  public static void main(String[] args) {
    Scanner cin = new Scanner(System.in);
    int sum = 100;
    int count=0;
    for(int i = 0; i < 100; i ++){
      for(int j = 0; j < 100; j ++){
        for(int k = 0; k < 100; k ++){
          if(0.5*i+1*j+5*k==100 && i+j+k==100){
            count += 1;
          }
        }
      }
    }
    System.out.println(count);
  }
}