1. 程式人生 > >UVALive 7503 Change(亂搞)題解

UVALive 7503 Change(亂搞)題解

cst const 隨機 價格 ive 需要 color main 代碼

題意:你現在有面額為A的紙幣,現在需要面額為B的錢(可以是一張也可以是好多張拼成一張),有一臺自動售貨機,裏面有任意價格的商品,售貨機兌換出的零錢是隨機的(比如找你0.03可能給你0.01+0.01+0.01也可能是0.01+0.02),那麽問至少要花多少錢你肯定能兌換到所需要的面額。A, B ∈ {0.01, 0.02, 0.05, 0.1, 0.2, 0.5, 1, 2, 5, 10, 20, 50, 100} and A > B

思路:題意讀錯了...這裏的意思不是你只能買一個東西,而是你買了之後可以用找零的錢繼續買,那麽如果0.01可以解決那麽就是0.01,其他的只要用零錢繼續0.01就可以了。

代碼:

#include<set
> #include<map> #include<cmath> #include<queue> #include<string> #include<cstdio> #include<cstring> #include<sstream> #include<algorithm> typedef long long ll; using namespace std; const int maxn = 1000 + 10; const int MOD = 1e9 + 7; const int
INF = 0x3f3f3f3f; int main(){ int t, ca = 1; scanf("%d", &t); while(t--){ double a, b; scanf("%lf%lf", &a, &b); printf("Case #%d: ", ca++); if(b == 0.01){ //0.03 if(a == 0.02){ printf("0.01\n"); }
else if(a == 0.05){ printf("0.02\n"); } else{ printf("0.02\n"); } } else if(b == 0.02){ //0.04 0.09 if(a == 0.05){ printf("0.01\n"); } else{ printf("0.01\n"); } } else if(b == 0.05){ //0.09 printf("0.01\n"); } else if(b == 0.1){ //0.39 if(a == 0.2) printf("0.01\n"); else if(a == 0.5) printf("0.02\n"); else printf("0.02\n"); } else if(b == 0.2){ //0.49 0.99 if(a == 0.5) printf("0.01\n"); else printf("0.01\n"); } else if(b == 0.5){ //0.99 printf("0.01\n"); } else if(b == 1){ //3.99 if(a == 2) printf("0.01\n"); else if(a == 5) printf("0.02\n"); else printf("0.02\n"); } else if(b == 2){ //4.99 9.99 if(a == 5) printf("0.01\n"); else printf("0.01\n"); } else if(b == 5){ //9.99 printf("0.01\n"); } else if(b == 10){ //39.99 if(a == 20) printf("0.01\n"); else printf("0.02\n"); } else if(b == 20){ //49.99 99.99 if(a == 50) printf("0.01\n"); else printf("0.01\n"); } else{ //99.99 printf("0.01\n"); } } return 0; }

UVALive 7503 Change(亂搞)題解