PAT 1077 Kuchiguse
链接:http://www.patest.cn/contests/pat-a-practise/1077
代码:
#include<iostream>
#include<string>
#include<cstdio>
#include<cstring>
#include<set>
#include<algorithm>
using namespace std;
int main()
{
int n;
char s[300];
string basic,nex;
scanf("%d",&n);
getchar();
gets(s);
basic=string(s);
reverse(basic.begin(),basic.end());
for(int i=1;i<n;++i)
{
int idx=0;
gets(s);
nex=string(s);
reverse(nex.begin(),nex.end());
for(;idx<nex.length()&&idx<basic.length();++idx)
if(nex[idx]!=basic[idx])
break;
basic=basic.substr(0,idx);
}
if(basic.length()>0)
{
reverse(basic.begin(),basic.end());
printf("%s\n",basic.c_str());
}
else
{
printf("nai\n");
}
return 0;
}
PAT 1078 Hashing
链接: http://www.patest.cn/contests/pat-a-practise/1078
代码:
#include<iostream>
#include<string>
#include<cstdio>
#include<cstring>
#include<set>
#include<cmath>
#include<algorithm>
using namespace std;
int h[10105];
bool flag[10105];
void calPrime()
{
memset(flag,false,sizeof(flag));
flag[0]=flag[1]=true;
for(int i=3; i<sqrt(10105)+1; i+=2)
{
if(flag[i]==false)
{
for(int j=i+i; j<10105; j+=i)
flag[j]=true;
}
}
}
int main()
{
int n,m,a;
memset(h,-1,sizeof(h));
calPrime();
scanf("%d%d",&m,&n);
if(m<=2)
m=2;
else
{
if(m%2==0) ++m;
for(; m<10055; m+=2)
if(flag[m]==false)
break;
}
//printf("%d\n",m);
for(int k=0; k<n; ++k)
{
scanf("%d",&a);
int idx=a%m;
if(h[idx]==-1)
{
if(k==0)
printf("%d",idx);
else
printf(" %d",idx);
h[idx]=a;
}
else
{
bool flag=false;
for(int i=1; i<m; ++i)
{
idx=(a+i*i)%m;
if(h[idx]==-1)
{
if(k==0)
printf("%d",idx);
else
printf(" %d",idx);
h[idx]=a;
flag=true;
break;
}
}
if(flag==false)
{
if(k==0)
printf("-");
else
printf(" -");
}
}
}
return 0;
}
PAT 1079 Total Sales of Supply Chain
链接: http://www.patest.cn/contests/pat-a-practise/1079
代码:
#include<iostream>
#include<string>
#include<cstdio>
#include<cstring>
#include<vector>
#include<set>
#include<cmath>
#include<algorithm>
using namespace std;
struct node
{
int num;//货物数量
int high;//高度
vector<int> sons;
}nodes[100005];
void dfs(int idx)
{
int len=nodes[idx].sons.size();
for(int i=0,j;i<len;++i)
{
j=nodes[idx].sons[i];
nodes[j].high=nodes[idx].high+1;
dfs(j);
}
}
int main()
{
int n,a,b;
double p,r,summ=0;
scanf("%d%lf%lf",&n,&p,&r);
r=1+r/100;
nodes[0].high=0;
for(int i=0;i<n;++i)
{
scanf("%d",&a);
if(a==0)
{
scanf("%d",&nodes[i].num);
}
else
{
for(int j=0;j<a;++j)
{
scanf("%d",&b);
nodes[i].sons.push_back(b);
nodes[i].num=0;
}
}
}
dfs(0);
for(int i=0;i<n;++i)
if(nodes[i].num!=0)
{
summ+=(pow(r,nodes[i].high)*nodes[i].num);
//printf("%d %d %d\n",i,nodes[i].high,nodes[i].num);
}
printf("%.1f\n",summ*p);
return 0;
}
PAT 1080 Graduate Admission
链接: http://www.patest.cn/contests/pat-a-practise/1080
代码: