7621:硬币面值组合
描述使用1角、2角、5角硬币组成 n 角钱。
设1角、2角、5角的硬币各用了a、b、c个,列出所有可能的a, b, c组合。
输出顺序为:先按c的值从小到大,若c相同则按b的值从小到大。
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
#include<bits/stdc++.h> using namespace std; int main() { int n; cin>>n; int ans=0,ans1=0; int maxx=(int)(n/5); for(int i=0;i<=maxx;i++) for(int j=0;j<=(n-5*i)/2;j++) { ans++; ans1=ans; string ans2=""; while(ans1>0) { char c=(ans1%10+(int)'0'); ans2=c+ans2; ans1=ans1/10; } while(ans2.length()<3) ans2='0'+ans2; cout<<ans2; printf("%12d%12d%12d\n",(n-2*j-5*i),j,i); } }