标签:timus 1796. amusement park 聪明题
| input | output |
|---|---|
0 2 0 0 0 0 10 |
5 6 7 8 9 10 |
1 2 0 0 0 0 10 |
1 11 |
这是一道考人是否聪明的题目,没有现成的算法。
所以需要模拟人计算的过程,用计算机的程序思维去思考。
过程这样的:
1 先算出总钱数能购买多少张票
2 总钱数减去一张最小面值的钱,然后模票价,然后加上最小面值的钱,在减去一张票价,最后就得到灵活度的钱
3 灵活度的钱除以票价,就得到灵活度了,灵活度的钱除以票价得到零,那么就只有一种可能了,得到1就有两种可能
难以理解的话,就细心想想人是如何计算的就可以解决了。
#include <iostream>
using namespace std;
static const int AmusePartRoubles[6] = {10, 50, 100, 500, 1000, 5000};
void AmusementPark1796()
{
int A[6] = {0};
int money = 0;
for (int i = 0; i < 6; i++)
{
cin>>A[i];
money += A[i] * AmusePartRoubles[i];
}
int ticket = 0;
cin>>ticket;
int total = money / ticket;
int i = 0;
for ( ; i < 6 && A[i] == 0; i++);
int leftMoney = (money - AmusePartRoubles[i]) % ticket;
leftMoney += AmusePartRoubles[i] - ticket;
int flex = leftMoney / ticket;
cout<<flex+1<<endl;
for (int j = flex; j >= 0 ; j--)
{
cout<<total - j<<‘ ‘;
}
}
int main()
{
AmusementPark1796();
return 0;
}
Timus 1796. Amusement Park 聪明题
标签:timus 1796. amusement park 聪明题
原文地址:http://blog.csdn.net/kenden23/article/details/24616509