【十一月】第六次课堂练习
p1577
#include<stdio.h> #include<algorithm> using namespace std; int n,k; int l[10005]; int ans; bool check(int length){ if(length == 0) return true; int sum = 0; for(int i=1;i<=n;i++) sum+=l[i]/length; if(sum>=k) return true; else return false; } int main(){ scanf("%d%d",&n,&k); int right = 0,left = 0,mid; for(int i=1;i<=n;i++){ float li; scanf("%f",&li); l[i] = li*100; if(l[i]>right) right = l[i]; } ans = 0; while(left<=right){ mid = (left+right)/2; if(check(mid)) { ans = max(ans,mid); left = mid+1; } else right = mid-1; } printf("%.2lf",ans*0.01); return 0; }
p3392
#include<iostream> #include<algorithm> using namespace std; int n,m,ans=0x7fffffff,w[51],b[51],r[51]; string s; inline int check(char c){ int tot=0; for(int i=0;i<m;++i) if(s[i]!=c)++tot; return tot; } int main(int argc, char const *argv[]) { cin>>n>>m; for(int i=1;i<=n;++i){ cin>>s; w[i]=w[i-1]+check('W'); b[i]=b[i-1]+check('B'); r[i]=r[i-1]+check('R'); } for(int i=1;i<n-1;++i) for(int j=i+1;j<n;++j) ans=min(ans,w[i]+b[j]-b[i]+r[n]-r[j]); cout<<ans; return 0; }
p2615
#include<cstdio> using namespace std; int n,a[40][40],x,y; int main(){ scanf("%d",&n); x=1,y=(n+1)/2; for(int i=1;i<=n*n;i++){ a[x][y]=i; if(!a[(x-2+n)%n+1][y%n+1]) x=(x-2+n)%n+1,y=y%n+1; else x=x%n+1;//数学运算 } for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ printf("%d ",a[i][j]); } printf("\n"); } }
p1518
#include<bits/stdc++.h> using namespace std; char m[12][12];//地图 int f[3],c[3],ans,tdz;//农夫,奶牛,秒数,专属值 bool zt[160005];//记录专属值是否出现 void move(int x,int y,int mi,int h){//移动函数 if (mi==0){ if (m[x-1][y]=='*') if (h==0) f[0]=1; else c[0]=1; else if (h==0) f[1]--; else c[1]--; }else if (mi==1){ if (m[x][y+1]=='*') if (h==0) f[0]=2; else c[0]=2; else if (h==0) f[2]++; else c[2]++; }else if (mi==2){ if (m[x+1][y]=='*') if (h==0) f[0]=3; else c[0]=3; else if (h==0) f[1]++; else c[1]++; }else{ if (m[x][y-1]=='*') if (h==0) f[0]=0; else c[0]=0; else if (h==0) f[2]--; else c[2]--; } } bool pd(){ //判断循环终止条件:如果奶牛坐标与农夫坐标相等,则他们重叠,返回0,退出循环 if (f[1]==c[1]&&f[2]==c[2]) return 0; else return 1; } int main(){ for (int i=0;i<=11;i++) m[i][0]='*',m[i][11]='*'; for (int i=1;i<=11;i++) m[0][i]='*',m[11][i]='*'; for (int i=1;i<=10;i++){ for (int j=1;j<=10;j++){ cin>>m[i][j]; if (m[i][j]=='F') f[1]=i,f[2]=j; if (m[i][j]=='C') c[1]=i,c[2]=j; } } while (pd()){//模拟每秒 tdz=f[1]+f[2]*10+c[1]*100+c[2]*1000+f[0]*10000+c[0]*40000; if (zt[tdz]){//死循环了就输出0并结束程序 cout<<0<<endl; return 0; } zt[tdz]=1;//标记 move(f[1],f[2],f[0],0); move(c[1],c[2],c[0],1);//依次移动农夫和奶牛 ans++;//记录秒数 } cout<<ans<<endl;//输出 return 0; }
p1601
#include<stdio.h> #include<string.h> #include<algorithm> using namespace std; char A[101],B[101]; int len_a,len_b,len_c; int a[101],b[101],c[101]; int t; int main(){ scanf("%s",A); scanf("%s",B); len_a = strlen(A); len_b = strlen(B); for(int i=0;i<len_a;i++) a[len_a-i-1]=A[i]-'0'; for(int i=0;i<len_b;i++) b[len_b-i-1]=B[i]-'0'; len_c = max(len_a,len_b); t = 0; for(int i=0;i<len_c;i++){ c[i]=a[i]+b[i]+t; t=c[i]/10; c[i]=c[i]%10; } if(t) { c[len_c]=1; len_c++; } for(int i=len_c-1;i>=0;i--) printf("%d",c[i]); return 0; }
p1480
#include<stdio.h> #include<string.h> #include<algorithm> using namespace std; char A[5001]; int b; int len_a,len_c; long long a[5001],c[5001]; long long t; int main(){ scanf("%s",A); scanf("%d",&b); len_a = strlen(A); for(int i=0;i<len_a;i++) a[i]=A[i]-'0'; len_c = len_a; t = 0; for(int i=0;i<len_c;i++){ c[i]=a[i]/b; t=a[i]%b; a[i+1]+=t*10; } bool flag = false; for(int i=0;i<len_c;i++) { if(c[i] == 0&&flag==false) continue; flag = true; printf("%d",c[i]); } return 0; }
p2142
#include<stdio.h> #include<string.h> #include<algorithm> using namespace std; char A[10087],B[10087]; int len_a,len_b,len_c; int a[10087],b[10087],c[10087]; bool flag; bool check(){ if(len_a<len_b) return false; else if(len_a>len_b) return true; else { for(int i=0;i<len_a;i++){ if(A[i]>B[i]) return true; else if(A[i]<B[i]) return false; } } return true; } void swapAB(){ flag = false; char tmp[10087]; strcpy(tmp,A); strcpy(A,B); strcpy(B,tmp); len_a = strlen(A); len_b = strlen(B); } int main(){ scanf("%s",A); scanf("%s",B); len_a = strlen(A); len_b = strlen(B); flag = true; if(check() == false) swapAB(); for(int i=0;i<len_a;i++) a[len_a-i-1]=A[i]-'0'; for(int i=0;i<len_b;i++) b[len_b-i-1]=B[i]-'0'; len_c = max(len_a,len_b); for(int i=0;i<len_c;i++){ if(a[i]<b[i]){ a[i]+=10; a[i+1]--; } c[i]=a[i]-b[i]; } while(c[len_c-1]==0&&len_c-1>0) len_c--; if(flag == false) printf("-"); for(int i=len_c-1;i>=0;i--) printf("%d",c[i]); return 0; }
p1303
#include<stdio.h> #include<string.h> #include<algorithm> using namespace std; char A[2001],B[2001]; int len_a,len_b,len_c; int a[2001],b[2001],c[4001]; int t; int main(){ scanf("%s",A); scanf("%s",B); len_a = strlen(A); len_b = strlen(B); for(int i=0;i<len_a;i++) a[len_a-i-1]=A[i]-'0'; for(int i=0;i<len_b;i++) b[len_b-i-1]=B[i]-'0'; len_c = len_a+len_b-1; for(int i=0;i<len_a;i++){ for(int j=0;j<len_b;j++){ c[i+j] += a[i]*b[j]; c[i+j+1] += c[i+j]/10; c[i+j] %= 10; } } if(c[len_c]) len_c++; while(c[len_c-1]==0&&len_c-1>0) len_c--; for(int i=len_c-1;i>=0;i--) printf("%d",c[i]); return 0; }
p1009
#include<stdio.h> #include<string.h> #include<algorithm> using namespace std; int n; int len[51]; int a[51][2001]; int len_c,c[2001]; void mul(int b){ len[b] = len[b-1]; for(int i=0;i<len[b];i++){ a[b][i] += a[b-1][i]*b; a[b][i+1] = a[b][i]/10; a[b][i] %= 10; } while(a[b][len[b]]){ a[b][len[b]+1] = a[b][len[b]]/10; a[b][len[b]]%=10; len[b]++; } } void add(int b){ len_c = max(len_c,len[b]); for(int i=0;i<len_c;i++){ c[i] += a[b][i]; c[i+1] +=c[i]/10; c[i]%=10; } if(c[len_c]) len_c++; } int main(){ scanf("%d",&n); len[0] = a[0][0] = 1; len_c=1; for(int i=1;i<=n;i++) { mul(i); add(i); } for(int i=len_c-1;i>=0;i--) printf("%d",c[i]); return 0; }