
题目描述六一儿童节到了小涵想买个玩具送给她姐姐但是她的钱全部都放在银行她想去银行取N元。但是银行只有三种面值的货币:第一种是1元面值。第二种是6的次方的面值如6、62、63......第三种是9的次方的面值如9、92、93......提取N元至少总共可以提取多少张纸币。输入格式一个真整数N代表涵涵要提取的数额。输出格式输出一个整数代表涵涵提取N元至少可以提取多少张纸币。输入/输出例子1输入127输出4输入/输出例子2输入3输出3输入/输出例子3输入44852输出16数据范围1 ≤ N ≤ 100000N为整数样例解释样例1解释1元9元36(6^2) 元81(9^2)127总共使用了4张纸币就可以组成了127元也就是涵涵至少可以获得4张纸币。样例2解释三张1元可以等到涵涵所需要的3元也就是涵涵至少可以获得3张纸币。参考答案#includebits/stdc.h #includevector using namespace std; int main() { int N; cin N; vectorint coins {1}; for (int i 6; i N; i * 6) { coins.push_back(i); } for (int i 9; i N; i * 9) { coins.push_back(i); } vectorint dp(N 1, INT_MAX); dp[0] 0; for (int i 1; i N; i) { for (int coin : coins) { if (i coin dp[i - coin] ! INT_MAX) { dp[i] min(dp[i], dp[i - coin] 1); } } } cout dp[N] endl; return 0; }题目链接https://v1.51goc.com/question/viewProgram/100103进去后要登录