习题地址传送门:
http://acm.zcmu.edu.cn/JudgeOnline/contest.php?cid=1155
———————— A ————————
#include <iostream> using namespace std; int n,m; bool OK(int a,int b) { return (a*a+b*b+m)%(a*b)==0; } int main() { int ans,i,j,k=0; while(cin>>n>>m) { if(n==0&&m==0) break; k++; ans=0; for(i=1;i<n-1;i++) { for(j=i+1;j<n;j++) { if(OK(i,j)) ans++; } } cout<<"Case "<<k<<": "<<ans<<endl; } return 0; }
———————— B ————————
#include <iostream> #include <iomanip> #include <cmath> #include <algorithm> using namespace std; bool OK(int x) { if(x>100||x<0) return false; return true; } double min(double a,double b) { return a<b?a:b; } double cal(double x1,double y1,double x2,double y2) { return sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)); } int main() { double x1,x2,y1,y2,k,b,dx[4],dy[4],ans; int i,j; while(cin>>x1>>y1>>x2>>y2) { ans=99999; if(x1==x2) { cout<<"100.00"<<endl; continue; } k=(y1-y2)/(x1-x2); b=y1-x1*k; dy[0]=0;dx[0]=(dy[0]-b)/k; dx[1]=0;dy[1]=k*dx[1]+b; dx[2]=100;dy[2]=k*dx[2]+b; dy[3]=100;dx[3]=(dy[3]-b)/k; for(i=0;i<4;i++) { for(j=i+1;j<4;j++) { if(!(OK(dx[i])&&OK(dy[i])&&OK(dx[j])&&OK(dy[j]))) continue; if(dx[i]==dx[j]&&dy[i]==dy[j]) continue; ans=min(ans,cal(dx[i],dy[i],dx[j],dy[j])); } } cout<<fixed<<setprecision(2)<<ans<<endl; } return 0; }
—————— D ———————
#include <iostream> #include <string.h> using namespace std; int main() { int ans,i,n; char str[10010]; cin>>n; while(n--) { ans=0; cin>>str; for(i=0;i<strlen(str);i++) { if(str[i]=='8') ans+=2; if(str[i]=='0'||str[i]=='9'||str[i]=='6') ans++; } cout<<ans<<endl; } return 0; }
—————— E ——————
#include <iostream> #include <algorithm> #include <string.h> using namespace std; typedef struct { int left,right; }node; bool cmp(node a,node b) { return a.right<b.right; } int main() { node N[1010]; int a,b,i,j,ans,n; while(cin>>n) { ans=0; memset(N,0,sizeof(N)); for(i=0;i<n;i++) { cin>>a>>b; N[i].left=min(a,b); N[i].right=max(a,b); } sort(N,N+n,cmp); for(i=1,j=0;i<n;i++) { if(N[i].left<=N[j].right) { ans++; continue; } else { j=i; } } cout<<ans<<endl; } return 0; }
—————— F ——————
#include <iostream> #include <string.h> using namespace std; bool OK(char *str,int left,int right) { int i; char cmp1[100100],cmp2[100100]; memset(cmp1,0,sizeof(cmp1)); memset(cmp2,0,sizeof(cmp2)); for(i=0;i<right-left+1;i++) { cmp1[i]=str[left+i]; cmp2[i]=str[right-i]; } if(strcmp(cmp1,cmp2)==0) return true; return false; } int main() { int i,j,k,n,flag; char str[100100]; cin>>n; while(n--) { flag=0; cin>>str; for(i=0;i<strlen(str);i++) { if(flag==1) break; for(j=0;j<=i;j++) { k=strlen(str)-i; if(OK(str,j,j+k-1)) { cout<<k<<endl; flag=1; break; } } } } return 0; }
—————— G ——————
#include <iostream> #include <string.h> #include <algorithm> using namespace std; int max(int a,int b) { return a>b?a:b; } typedef struct { int date,num; }node; bool cmp(node a,node b) { return a.date<b.date; } int main() { int n,m,i,j,k,a,b; node G[110]; cin>>k; while(k--) { a=0; b=0; memset(G,0,sizeof(G)); cin>>n>>m; G[0].date=0; G[n+1].date=101; for(i=1;i<=n;i++) cin>>G[i].date; if(m>=n) { cout<<"100"<<endl; continue; } sort(G,G+n+2,cmp); for(i=1;i<=n;i++) { if(i-m-1>=0) a=G[i].date-G[i-m-1].date-1; if(i+m+1<=n+1) b=G[i+m+1].date-G[i].date-1; G[i].num=max(a,b); } for(i=2,j=G[1].num;i<=n;i++) { if(G[i].num>j) j=G[i].num; } cout<<j<<endl; } return 0; }
—————— H ——————
#include <iostream> using namespace std; int main() { int num[101000],n,i; num[1]=1; num[2]=2; for(i=3;i<=100000;i++) num[i]=(num[i-1]+num[i-2])%19999997; while(cin>>n) cout<<num[n]<<endl;; return 0; }
J就不提交了,大家懂的……