第一题还没看懂题意:等以后懂了再补吧。
列变位法解密
Accepts: 395
Submissions: 1308
Time Limit: 2000/1000 MS (Java/Others)
Memory Limit: 65536/65536 K (Java/Others)
有vector记录即可
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<queue>
#include<list>
#include<vector>
using namespace std;
const int maxn=100010;
char str[maxn];
vector<char>vec[maxn];
int main()
{
int t,i,j,k,test=1;
scanf("%d",&t);
while(t--){getchar();
gets(str);
scanf("%d",&k);
int len=strlen(str);
int col=len/k;if(len%k)col++;
for(i=0;i<col;++i)vec[i].clear();
int col1=col;
int cnt=0,num=len%k;
for(i=0;i<len;i+=col){
if(cnt>=num&&num){
col--;num=maxn;
}
for(j=i;j<i+col&&j<len;++j){
vec[j-i].push_back(str[j]);
}
cnt++;
}
printf("Case #%d:\n",test++);
for(i=0;i<col1;++i){
for(j=0;j<vec[i].size();++j){
printf("%c",vec[i][j]);
}
}
printf("\n");
}
return 0;
}
IP聚合
Accepts: 410
Submissions: 1037
Time Limit: 2000/1000 MS (Java/Others)
Memory Limit: 65536/65536 K (Java/Others)
用map记录即可
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<queue>
#include<list>
#include<vector>
#include<map>
using namespace std;
map<__int64,bool>M;
struct Node{
__int64 a,b,c,d;
}A[1010];
int main()
{
int t,i,j,k,test=1;
scanf("%d",&t);
while(t--){
int n,m;
scanf("%d%d",&n,&m);
for(i=0;i<n;++i){
scanf("%I64d.%I64d.%I64d.%I64d",&A[i].a,&A[i].b,&A[i].c,&A[i].d);
}
__int64 AA,B,C,D,ans;
printf("Case #%d:\n",test++);
for(i=0;i<m;++i){
scanf("%I64d.%I64d.%I64d.%I64d",&AA,&B,&C,&D);
M.clear();ans=0;
for(j=0;j<n;++j){
__int64 aa=AA&A[j].a,bb=B&A[j].b,cc=C&A[j].c,dd=D&A[j].d;
if(!M.count(aa*300*300*300+bb*300*300+cc*300+dd)){
ans++;M[aa*300*300*300+bb*300*300+cc*300+dd]=true;
}
}
printf("%I64d\n",ans);
}
}
return 0;
}
放盘子
Accepts: 339
Submissions: 858
Time Limit: 2000/1000 MS (Java/Others)
Memory Limit: 65536/65536 K (Java/Others)
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<cmath>
#include<queue>
#include<list>
#include<vector>
#define PI acos(-1.0)
#define eps 1e-6
using namespace std;
int main()
{
int t,test=1;
double n,a,r;
scanf("%d",&t);
while(t--){
scanf("%lf%lf%lf",&n,&a,&r);
printf("Case #%d:\n",test++);
double angle1=(2.0*PI/n);
double d=(a/2.0)/tan(angle1/2);
if(d-r<eps){
printf("I want to kiss you!\n");
//printf("Give me a kiss!\n");
}
else {
if(d-3.0*r>eps||d-r>eps){
printf("Give me a kiss!\n");
}
else {
printf("I want to kiss you!\n");
}
}
}
return 0;
}