結果
問題 | 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 1000000001int 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;}