下記のリンクでの問題において5つくらいのケースでTLEが起きてしまうのですが,modでの最大値はどのようにすれば早く求めることが出来ますでしょうか.
whileの終了条件があまりよくないのだろうという考えには至るのですが,maxが二週目でも同じであるというやり方以外にどのようなものがありますか?
問題
C
1#include<stdio.h> 2#include<stdlib.h> 3#include<string.h> 4#include<math.h> 5 6 7int main(void){ 8 9 int numG,capacity; 10 11 scanf("%d %d",&numG,&capacity); 12 13 int ans=0; 14 int sum_capa=0; 15 16 if(numG%capacity==0){ 17 printf("0\n"); 18 return 0; 19 } 20 21 while(1){ 22 sum_capa+=capacity; 23 if(sum_capa>=numG) break; 24 } 25 int part=sum_capa-numG; 26 int max=0; 27 int cal=0; 28 while(1){ 29 cal+=part; 30 cal%=capacity; 31 if(max==cal) break; 32 if(max<cal) max=cal; 33 if(max==capacity-1) break; 34 35 36 } 37 printf("%d\n",max); 38 return 0; 39} 40
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/24 16:40 編集
2020/08/24 17:16
2020/08/29 11:04