結果
問題 |
No.176 2種類の切手
|
ユーザー |
![]() |
提出日時 | 2015-04-06 00:12:18 |
言語 | C90 (gcc 12.3.0) |
結果 |
RE
|
実行時間 | - |
コード長 | 678 bytes |
コンパイル時間 | 211 ms |
コンパイル使用メモリ | 20,992 KB |
実行使用メモリ | 6,824 KB |
最終ジャッジ日時 | 2024-10-08 03:10:01 |
合計ジャッジ時間 | 1,155 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
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 i; scanf("%d %d %d",&A,&B,&T); int min_left = MAX_T; for(i=0;i<T;i++){ int pay = B * i + ( A * ( (T-B*i-1)/A + 1 ) ); int left = pay - T; min_left = min( min_left, left ); //printf("pay:%d left:%d min:%d\n",pay,left,min_left); } printf("%d\n",min_left + T ); return 0; }