Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
help about cog-wheelsthis is my code. I always get the run time error, but after check, I still find nothing wrong and the test sequence can be passed. #include <stdio.h> #include <math.h> int common_divisor(int a,int b) { int c; c = a % b; while(c) { a = b; b = c; c = a % b; } return b; } int main(void) { int scenarios=0,i=0,j=0,l=0,no_cog=0,cog[20]={0},ratio[10]={0},ratio_raw[10]={0},min=101,no_ratio=0; while(scanf("%d",&scenarios)) { for (l=0;l<scenarios;l++) { scanf("%d",&no_cog); if (no_cog>20) { break; } for (i=0;i<no_cog;i++) { scanf("%d",&cog[i]); if (cog[i]>100||cog[i]<5) { return EOF; } min=(min>cog[i]?cog[i]:min); } scanf("%d",&no_ratio); for (i=0;i<no_ratio;i++) { scanf("%d %d",&ratio_raw[i*2],&ratio_raw[i*2+1]); if (ratio_raw[i*2]!=0&&ratio_raw[i*2+1]!=0) { ratio[i*2]=ratio_raw[i*2]/common_divisor(ratio_raw[i*2],ratio_raw[i*2+1]); ratio[i*2+1]=ratio_raw[i*2+1]/common_divisor(ratio_raw[i*2],ratio_raw[i*2+1]); } } for(i=0;i<no_cog;i++) { cog[i]=cog[i]/min; } printf("Scenario #%d:\n",l+1); for (j=0;j<no_ratio;j++) { if (ratio_raw[j*2+1]!=0&&ratio_raw[j*2]!=0) { for (i=0;i<no_cog;i++) { if (cog[i]==1) continue; else { while (ratio[j*2+1]%cog[i]==0) ratio[j*2+1]=ratio[j*2+1]/cog[i]; while (ratio[j*2]%cog[i]==0) ratio[j*2]=ratio[j*2]/cog[i]; } } } else { goto label; } label: if (ratio[j*2]==1 && ratio[j*2+1]==1) printf("Gear ratio %d:%d can be realized.\n",ratio_raw[j*2],ratio_raw[j*2+1]); else printf("Gear ratio %d:%d cannot be realized.\n",ratio_raw[j*2],ratio_raw[j*2+1]); } } } } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator