1740 - 换零钱 [1*]
时间限制 : 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); } }