pat乙级1091-1095

//1
#include<stdio.h>
int fun(int a){
int t=0,s[5];
while(a){
s[t++]=a%10;
a/=10;
}
return t;
}
int main(){
int m,a,b,c;
scanf("%d",&m);
while(m--){
int flag=0;
scanf("%d",&a);
for(int i=1;i<10;i++){
b=i*a*a;
c=fun(a);
if((c==1&&b%10==a)||(c==2&&b%100==a)||(c==3&&b%1000==a)){
printf("%d %d\n",i,b);
flag=1;
break;
}
}
if(!flag){
printf("No\n");
}
}
return 0;
}
//2
#include<stdio.h>
int main(){
int m,n;
scanf("%d%d",&n,&m);
int a[n+1];
for(int i=1;i<=n;i++)
a[i]=0;
int t;
for(int i=1;i<=m;i++){
for(int j=1;j<=n;j++){
scanf("%d",&t);
a[j]+=t;
}
}
int max=a[1];
for(int i=2;i<=n;i++)
if(a[i]>max) max=a[i];
printf("%d\n",max);
int b[n],k=0;
for(int i=1;i<=n;i++){
if(a[i]==max) b[k++]=i;
}
for(int i=0;i<k;i++){
if(i!=0) printf(" ");
printf("%d",b[i]);
}
return 0;
}
//3
#include<stdio.h>
int main(){
int s[127]={0};
char c;
for(int i=0;i<2;i++){
while((c=getchar())!='\n'){
if(s[c]==0){
s[c]=1;
printf("%c",c);
}
}
}
return 0;
}
//4
#include<bits/stdc++.h>
using namespace std;
int l,k;
char a[1010];
int isprime(int a){
if(a==0||a==1) return 0;
if(a==2) return 1;
for(int i=2;i*i<=a;i++)
if(a%i==0) return 0;
return 1;
}
int main(){
scanf("%d%d",&l,&k);
scanf("%s",a);
vector<int> v;
for(int i=0;i<=l-k;i++){
v.clear();
int sum=0;
for(int j=i;j<i+k;j++){
sum=sum*10+a[j]-'0';
v.push_back(a[j]-'0');
}
if(isprime(sum)){
for(int p=0;p<k;p++)
printf("%d",v[p]);
return 0;
}
}
printf("404");
return 0;
}
//5
#include<bits/stdc++.h>
#include<unordered_map>
using namespace std;
struct node{
string t;
int value;
};
int cmp(const node &a,const node &b){
return a.value!=b.value ? a.value>b.value : a.t<b.t;
}
int main(){
int n,k,num;
cin>>n>>k;
vector<node> v(n);
for(int i=0;i<n;i++)
cin>>v[i].t>>v[i].value;
string s;
for(int i=1;i<=k;i++){
cin>>num>>s;
printf("Case %d: %d %s\n",i,num,s.c_str());
int sum=0,cnt=0;
vector<node> ans;
if(num==1){
for(int j=0;j<n;j++)
if(v[j].t[0]==s[0]) ans.push_back(v[j]);
}else if(num==2){

for(int j=0;j<n;j++){
if(v[j].t.substr(1,3)==s){
sum+=v[j].value;
cnt++;
}
}
if(cnt!=0) printf("%d %d\n",cnt,sum);
}else if(num==3){
unordered_map<string,int> m;
for(int j=0;j<n;j++)
if(v[j].t.substr(4,6)==s ) m[v[j].t.substr(1,3)]++;
for(auto it:m) ans.push_back({it.first,it.second});
}
sort(ans.begin(),ans.end(),cmp);
for(int j=0;j<ans.size();j++) printf("%s %d\n",ans[j].t.c_str(),ans[j].value);
if(((num==1||num==3)&&ans.size()==0)||(num==2&&cnt==0)) cout<<"NA"<<endl;
}
return 0;
}

posted @ 2019-03-01 15:19  捕鱼儿海  阅读(178)  评论(0编辑  收藏  举报