uva12108 特別困的學生 紫書4-8
阿新 • • 發佈:2018-12-03
打了兩個小時war3 心疼自己少做了一道題。那就不打了,開始做題吧。
uva12108 特別困的學生 紫書4-8
這題我一開始看覺得好難呀。後面跟同學邊聊天邊寫(打字聊天,我打字快)然後寫完了。然後樣例輸出時間為18,我是17,我就沒細想,把我時間初始值加1.(原因是因為題目的初始意思就是t=1)然後呢不是要輸出-1,如果不存在清醒時刻的話。
我覺得可能和公倍數有關,但我還是由於分心,沒有細想,設定了個t如果大於10000就break輸出-1。
結果竟然一次ac。。。
大致思路用了個結構體,用結構體來儲存每個學生的資訊又簡單又方便。
以後要記得。臨界點上我揣摩了很久,後面也沒想,先輸出看看。然後再微調結果,結果過了。
呃呃呃,這題真是看著難,做著無比順暢,程式碼也就那麼一點點,還一次ac
放程式碼
#include<stdio.h> int kase=0; struct student {int a,b,c;}s[11]; int cir(int n) { int sub=0; for(int i=0;i<n;i++) { if(s[i].c>s[i].a)sub++; } return sub; } int main() { // freopen("input.txt","r",stdin); int n,t=1; hey: while(scanf("%d",&n)==1&&n) { t=1; for(int i=0;i<n;i++) { scanf("%d%d%d",&s[i].a,&s[i].b,&s[i].c); } for(;;) { int sub=2*cir(n); if(sub>n) { for(int i=0;i<n;i++) { if(s[i].c==(s[i].a+s[i].b)){s[i].c=1;} else s[i].c+=1; } } else { for(int i=0;i<n;i++) { if(s[i].c==s[i].a){s[i].c=1;} else if(s[i].c==(s[i].a+s[i].b)){s[i].c=1;} else s[i].c+=1; } } t++; if(cir(n)==0)break; if(t>10000){printf("Case %d: -1\n",++kase);goto hey;} } printf("Case %d: %d\n",++kase,t); } return 0; }
ok,如果不是因為打了war3,我可能明天就可以學第五章了!!!!