結果
問題 | No.176 2種類の切手 |
ユーザー |
![]() |
提出日時 | 2015-04-06 01:10:32 |
言語 | C90 (gcc 12.3.0) |
結果 |
RE
(最新)
AC
(最初)
|
実行時間 | - |
コード長 | 838 bytes |
コンパイル時間 | 108 ms |
コンパイル使用メモリ | 21,376 KB |
実行使用メモリ | 6,824 KB |
最終ジャッジ日時 | 2024-12-23 15:43:33 |
合計ジャッジ時間 | 1,457 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | RE * 3 |
other | RE * 29 |
コンパイルメッセージ
main.c: In function ‘main’: main.c:26:9: warning: ignoring return value of ‘scanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 26 | scanf("%d %d %d",&A,&B,&T); | ^~~~~~~~~~~~~~~~~~~~~~~~~~
ソースコード
#include <stdio.h> #include <stdlib.h> #define MAX_T 1000000001 int memo[MAX_T]; int A,B,T; #define min(a,b) (((a)>(b))?(b):(a)) int solve( int left){ if( left <= 0 ){ return -left; } if( memo[left] != 0 ){ return memo[left]; } int min_A = solve( left - A ); int min_B = solve( left - B ); memo[left] = min( min_A, min_B ); return memo[left]; } int main( void ){ int a_num,b_num; scanf("%d %d %d",&A,&B,&T); int min_left = MAX_T; for(b_num=0;b_num<=A;b_num++){ a_num = (T-B*b_num)/A ; a_num = a_num<0?0:a_num; int pay = B*b_num + A*a_num; if( pay < T ){ a_num++; pay += A; } int left = pay - T; min_left = min( min_left, left ); if( min_left == 0 ){ break; } //printf("pay:%d left:%d min:%d \n",pay,left,min_left); if( b_num*B > T ){ break; } } printf("%d\n",min_left + T ); return 0; }