買不到額數目



標題:買不到的數目


    小明開了一家糖果店。他別出心裁:把水果糖包成4顆一包和7顆一包的兩種。糖果不能拆包賣。


    小朋友來買糖的時候,他就用這兩種包裝來組合。當然有些糖果數目是無法組合出來的,比如要買 10 顆糖。


    你可以用計算機測試一下,在這種包裝情況下,最大不能買到的數量是17。大於17的任何數字都可以用4和7組合出來。


    本題的要求就是在已知兩個包裝的數量時,求最大不能組合出的數字。


輸入:
兩個正整數,表示每種包裝中糖的顆數(都不多於1000)


要求輸出:
一個正整數,表示最大不能買到的糖數


不需要考慮無解的情況


例如:
用戶輸入:
4 7
程序應該輸出:
17


再例如:
用戶輸入:
3 5
程序應該輸出:
7






 
資源約定:
峯值內存消耗 < 64M
CPU消耗  < 3000ms


標記數組, 如果當前位 - a, -b爲1那麼說明這個位置可以由之前-a. 或者-b的而得

如果是每袋糖果裝一千個, 輸出2013

如何用純數學方法解決這個問題, 還不清楚, 不過我猜, 應該有吧


#include<stdio.h>


#define N 10000000
int candy[N];


int main(){
int i;
int a, b, min;
int count;
scanf("%d%d", &a, &b);
candy[a] = candy[b] = 1;
min = a < b ? a : b;
//printf("...%d  %d\n", candy[min - b], candy[-100]);
count = 0;
for(i = min; i < N; i++){
//printf("%d %d\n", i, candy[i]);
if((i >= a && candy[i - a] == 1) || (i >= b && candy[i - b] == 1)){
count++;
candy[i] = 1;
}
else
count = 0;
if(count == min){
printf("%d\n", i - min);
break;
}
}
return 0;
}

  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章