Problem A
Accepts: 1722
Submissions: 11918
Time Limit: 2000/1000 MS (Java/Others)
Memory Limit: 65536/65536 K (Java/Others)
<pre name="code" class="cpp"><pre name="code" class="cpp">#include<cstdio>
#include<cstdlib>
#include<cstring>
using namespace std;
int f[1005][1005];
void count(){
f[1][0]=1;f[2][0]=1;
int p,q,i,j,e;
for(i=3;i<=1001;++i){
p=0;
for(j=0;j<1000;++j){
f[i][j]=(f[i-1][j]+f[i-2][j]+p)%10;
p=(f[i-1][j]+f[i-2][j]+p)/10;
}
}
}
int main()
{
count();
int n,t,i,k,j;
while(scanf("%d",&k)!=EOF){k+=1;
for(i=1000;i>=0;--i)
if(f[k][i]!=0)break;
for(j=i;j>=0;--j)
printf("%d",f[k][j]);
printf("\n");
}
return 0;
}
Problem D
Accepts: 2735
Submissions: 8233
Time Limit: 2000/1000 MS (Java/Others)
Memory Limit: 65536/65536 K (Java/Others)
<pre name="code" class="cpp">#include<cstdio>
#include<map>
#include<cstring>
#include<algorithm>
using namespace std;
struct node
{
char str[50];
int id,num;
}p[1000010];
char s[50];
int cmp(node s1,node s2)
{
if(strcmp(s1.str,s2.str)==0)
return s1.id<s2.id;
if(strcmp(s1.str,s2.str)<0)
return true;
return false;
}
int cmp1(node s1,node s2)
{
return s1.id<s2.id;
}
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
for(int i=0;i<n;i++)
{
scanf("%s",p[i].str);
int l=strlen(p[i].str);
sort(p[i].str,p[i].str+l);
p[i].id=i;
p[i].num=0;
}
sort(p,p+n,cmp);
int cnt=0;
strcpy(s,p[0].str);
for(int i=1;i<n;i++)
{
if(strcmp(s,p[i].str)==0)
{
p[i].num=++cnt;
}
else
{
p[i].num=0;
cnt=0;
strcpy(s,p[i].str);
}
}
sort(p,p+n,cmp1);
for(int i=0;i<n;i++)
printf("%d\n",p[i].num);
}
return 0;
}
本文介绍了使用字符串哈希解决度熊丢失单词序列的问题,并提供了一种统计具有奇特姓名的人口数量的方法。
287

被折叠的 条评论
为什么被折叠?



