URAL 1796 Amusement Park
2015-04-28 00:04
411 查看
题意:有6种面值,分别是10,50,100,500,1000,5000。老师分别给了这些面值钱的张数,这些钱的张数必须得用完,给出票的价钱,问老师可能买多少张票。
解法:想想平时怎么买东西,当你给出的最小的钱是50的时候,如果东西的价格是10,你就有可能买1个,2个,3个,4个,5个。所以说在钱的张数一定的情况下,决定你能买多少张票的因素就是最小的面额。
右区间肯定是sum/p;左区间是(sum-最小面额)/p + 1;
解法:想想平时怎么买东西,当你给出的最小的钱是50的时候,如果东西的价格是10,你就有可能买1个,2个,3个,4个,5个。所以说在钱的张数一定的情况下,决定你能买多少张票的因素就是最小的面额。
右区间肯定是sum/p;左区间是(sum-最小面额)/p + 1;
#include <iostream> #include <cstring> #include <cstdio> #include <algorithm> using namespace std; int a[6] = {10,50,100,500,1000,5000}; int b[6]; int main() { int p; memset(b,0,sizeof(b)); while(~scanf("%d%d%d%d%d%d",&b[0],&b[1],&b[2],&b[3],&b[4],&b[5])) { scanf("%d",&p); int k = 0; for(int i = 0; i < 6; i++) { if(b[i])//最小面额 { k = i; break; } } int sum = 0; for(int i = 0; i < 6; i++) sum += a[i]*b[i]; int r = sum / p; int l = (sum - a[k])/p; printf("%d\n",r-l); for(int i = l + 1; i <= r; i++) printf("%d ",i); printf("\n"); memset(b,0,sizeof(b)); } return 0; }
相关文章推荐
- URAL 1796. Amusement Park (math)
- URAL - 1796 Amusement Park(水)
- URAL 1796. Amusement Park (math)
- Timus 1796. Amusement Park 聪明题
- Timus 1796. Amusement Park 聪明题
- hdu 1796 容斥原理
- ural 1874 Football Goal
- The journey of Ural dynamic programming
- ural 1203. Scientific Conference
- URAL 1982 最小生成树变形
- ural 1017. Staircases(dp)
- URAL 1942 Attack at the Orbit
- URAL 1029 Ministry(记录路径的dp)
- URAL 1935 Tears of Drowned
- URAL 1932 The Secret of Identifier 题解
- Ural 1971(Graphics Settings-延迟计算)
- ural 1297 后缀数组求最长回文子串
- Ural 1277
- URAL 1742 Team building
- ural 1998