硬币面值组合
时间限制:1秒 内存限制:128M
题目描述
使用1角、2角、5角硬币组成 n 角钱。设1角、2角、5角的硬币各用了a、b、c个,列出所有可能的a, b, c组合。输出顺序为:先按c的值从小到大,若c相同则按b的值从小到大。
输入描述
一个整数n(1 <= n <= 100),代表需要组成的钱的角数。
输出描述
输出有若干行,每行的形式为: i a b c 第1列i代表当前行数(行数从001开始,固定3个字符宽度,宽度不足3的用0填充),后面3列a, b, c分别代表1角、2角、5角硬币的个数(每个数字固定12个字符宽度,宽度不足的在左边填充空格)。
样例
输入
10
输出
001 10 0 0
002 8 1 0
003 6 2 0
004 4 3 0
005 2 4 0
006 0 5 0
007 5 0 1
008 3 1 1
009 1 2 1
010 0 0 2
这题非常简单,直接打暴力就行了
那就废话不多说,不多说废话,因为说废话真的很烦,也不知道大家喜不喜欢话说废话,不过我是从不说废话的,那我们上AC代码:
#include<iostream>
#include<cstdio>
#include<string>
#include<cmath>
#include<iomanip>
#include<cstring>
#include<algorithm>
#include<vector>
#include<stack>
#include<queue>
#include<set>
#include<list>
using namespace std;
int main(){
int n,ans=1,i,j,k;
cin>>n;
for(i=0;i<=n/5;i++){
for(j=0;j<=n/2;j++){
for(k=0;k<=n;k++){
if(i*5+j*2+k==n){
printf("%03d",ans);
ans++;
printf("%12d%12d%12d\n",k,j,i);
}
}
}
}
return 0;
}
好了!
下篇博文见!