第一题:ccpc直播(简单输出题)水
#include<iostream> #include<string> #include<iomanip> using namespace std; int main() { int T; cin>>T; string str,Tstr; int prob,rank,n; while(T--) { cin>>rank>>str>>prob>>Tstr; if(Tstr=="Running") cin>>n; // cout<<right<< printf("%3d|",rank); cout<<str; int len=str.length(); for(int i=len+1;i<=16;i++) { cout<<" "; } cout<<"|"<<prob<<"|["; if(Tstr=="Running") { for(int i=0;i<n;i++) cout<<"X"; for(int i=n;i<10;i++) cout<<" "; cout<<"]"<<endl; } else { for(int i=0;i<4;i++) cout<<" "; int mylen=Tstr.length(); if(Tstr=="FB") { mylen=3; cout<<"AC*"; } else cout<<Tstr; for(int i=mylen+4;i<10;i++) cout<<" "; cout<<"]"<<endl; } } }
第二题:
#include<iostream> #include<vector> #include <algorithm> using namespace std; int x; vector<int> p[100005];//这个数组每个元素都有vector容器 int shuru(int j,int y) //记录因子在vector中 { for(int i=2;i*i<=y;i++) { while(y%i==0)//说明i是j的因子 { p[i].push_back(j);//p[i]的容器里插入位置j y/=i; } } if(y>1) p[y].push_back(j); //记录(本身)因子 } bool panduan(int d,int l,int r){ int t; for(int i=2;i*i<=d;i++){ t=0; while(d%i==0){ t++,d=d/i; } if(t>0&&upper_bound(p[i].begin(), p[i].end(), r)- lower_bound(p[i].begin(), p[i].end(), l)<t) return false; } if(d>1&&upper_bound(p[d].begin(), p[d].end(),r)- lower_bound(p[d].begin(), p[d].end(), l)==0) return false; return true; } int main() { int T; cin>>T; while(T--) { int n,q,l,r,d; cin>>n>>q; for(int i=0;i<=100000;i++) p[i].clear();//先清除存储 for(int i=1;i<=n;i++) //输入排列的数 { cin>>x; shuru(i,x); } for(int i=1;i<=q;i++) { scanf("%d%d%d",&l,&r,&d); if(panduan(d,l,r)) cout<<"Yes"<<endl; else cout<<"No"<<endl; } } return 0; }