#include <stdio.h>
#include <math.h>
int main()
{
int i,data,a,y1,y2,temp,first=0;
while(scanf("%d",&data)==1)
{
int flag =1;
data--;
if(first)
printf( "\n" );
first++;
scanf("%d",&a);
scanf("%d %d",&y1,&y2);
temp= abs(y1-y2);
for(i=0;i<a;i++)
{
scanf("%d %d",&y1,&y2);
if(abs(y1-y2)!=temp)
flag=0;
}
if(flag)
printf("Yes\n");
else
printf("No\n");
}
system("pause");
return 0;
}
olia c
這裡是我自己練習程式的小角落.........
2012年1月13日 星期五
acm 10929 You can say 11
[心得]
if((abs(odd-even))%11==0) ,(abs(odd-even)) 記得要括弧,不然會一直錯!
#include <stdio.h>
#include <string.h>
#include <math.h>
char s[1002];
int main()
{
while(gets(s))
{
int i,length,num;
int odd=0,even=0;
if(s[0]=='0'&& s[1]=='\0')
break;
length =strlen(s);
for(i=0;i<length;i++)
{
if((i%2)== 1) /*奇數位元*/
odd += s[i]-48;
else /*偶數位元*/
even+= s[i]-48;
}
if((abs(odd-even))%11==0)
printf("%s is a multiple of 11.\n",s);
else
printf("%s is not a multiple of 11.\n",s);
}
system("pause");
return 0;
}
if((abs(odd-even))%11==0) ,(abs(odd-even)) 記得要括弧,不然會一直錯!
#include <stdio.h>
#include <string.h>
#include <math.h>
char s[1002];
int main()
{
while(gets(s))
{
int i,length,num;
int odd=0,even=0;
if(s[0]=='0'&& s[1]=='\0')
break;
length =strlen(s);
for(i=0;i<length;i++)
{
if((i%2)== 1) /*奇數位元*/
odd += s[i]-48;
else /*偶數位元*/
even+= s[i]-48;
}
if((abs(odd-even))%11==0)
printf("%s is a multiple of 11.\n",s);
else
printf("%s is not a multiple of 11.\n",s);
}
system("pause");
return 0;
}
acm 10924 Prime Words
[心得] //0.004
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main()
{
char s[30];
int ans[53];
int i,length,sum,flag;
while(gets(s)!=NULL)
{
memset(ans,0,sizeof(ans));
length =strlen(s);
sum=0;
flag=0;
for(i=0;i<length;i++)
{
if(isupper(s[i]))
ans[(s[i]-38)]+=1; /* 大寫A ASCII從65map到陣列ans27的位置 */
else
ans[(s[i]-96)]+=1; /* 小寫a ASCII從97map到陣列ans1的位置 */
}
for(i=1;i<53;i++)
{
if(ans[i])
sum=sum+ans[i]*i;
}
for(i=2;i<sum;i++)
{
if(sum %i ==0)
flag=1;
}
if(flag)
printf("It is not a prime word.\n");
else
printf("It is a prime word.\n");
}
system("pause");
return 0;
}
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main()
{
char s[30];
int ans[53];
int i,length,sum,flag;
while(gets(s)!=NULL)
{
memset(ans,0,sizeof(ans));
length =strlen(s);
sum=0;
flag=0;
for(i=0;i<length;i++)
{
if(isupper(s[i]))
ans[(s[i]-38)]+=1; /* 大寫A ASCII從65map到陣列ans27的位置 */
else
ans[(s[i]-96)]+=1; /* 小寫a ASCII從97map到陣列ans1的位置 */
}
for(i=1;i<53;i++)
{
if(ans[i])
sum=sum+ans[i]*i;
}
for(i=2;i<sum;i++)
{
if(sum %i ==0)
flag=1;
}
if(flag)
printf("It is not a prime word.\n");
else
printf("It is a prime word.\n");
}
system("pause");
return 0;
}
acm 10903 Rock-Paper-Scissors Tournament
[心得] //0.256
1.memset也可以初始化 布林陣列 ,memset define 在 "string.h"裡
2. res[]陣列是用來記錄選手i贏的次數
3.flag[]陣列是,表示這次比賽如果不是平手,=>用來記錄選手i 這次比賽有意義
4, time[] 陣列是用來紀錄選手i到底比賽幾次(但是平手不紀錄)
#include <stdio.h>
#include <string.h>
#include <stdbool.h>
int i,j=0,number,time[150],game,p1,p2,res[150];
char m1[10],m2[10];
int main()
{
while(scanf("%d %d",&number,&game)==2)
{
if(number==0)
break;
if(j>0)
printf("\n");
j++;
bool flag[number+1];
game= game*number*(number-1)/2;
memset(res,0,sizeof(res));
memset(time,0,sizeof(time));
memset(flag,false,sizeof(flag));
for(i=0;i<game;i++)
{
scanf("%d %s %d %s",&p1,m1,&p2,m2);
if(m1[0]=='r' && m2[0]=='p')
{res[p2]+=1; flag[p1]=flag[p2]=true; time[p1]+=1;time[p2]+=1;}
else if (m1[0]=='r' && m2[0]=='s')
{res[p1]+=1; flag[p1]=flag[p2]=true; time[p1]+=1;time[p2]+=1;}
else if (m1[0]=='p' && m2[0]=='r')
{res[p1]+=1; flag[p1]=flag[p2]=true; time[p1]+=1;time[p2]+=1;}
else if (m1[0]=='p' && m2[0]=='s')
{res[p2]+=1; flag[p1]=flag[p2]=true; time[p1]+=1;time[p2]+=1;;}
else if (m1[0]=='s' && m2[0]=='p')
{res[p1]++; flag[p1]=flag[p2]=true; time[p1]+=1;time[p2]+=1;}
else if (m1[0]=='s' && m2[0]=='r')
{res[p2]+=1; flag[p1]=flag[p2]=true; time[p1]+=1;time[p2]+=1;}
}
for(i=1;i<=number;i++)
{
if( flag[i] == false)
printf("-\n");
else
{
printf("%.3f\n",(double)res[i]/time[i]);
}
}
}
system("pause");
return 0;
}
1.memset也可以初始化 布林陣列 ,memset define 在 "string.h"裡
2. res[]陣列是用來記錄選手i贏的次數
3.flag[]陣列是,表示這次比賽如果不是平手,=>用來記錄選手i 這次比賽有意義
4, time[] 陣列是用來紀錄選手i到底比賽幾次(但是平手不紀錄)
#include <stdio.h>
#include <string.h>
#include <stdbool.h>
int i,j=0,number,time[150],game,p1,p2,res[150];
char m1[10],m2[10];
int main()
{
while(scanf("%d %d",&number,&game)==2)
{
if(number==0)
break;
if(j>0)
printf("\n");
j++;
bool flag[number+1];
game= game*number*(number-1)/2;
memset(res,0,sizeof(res));
memset(time,0,sizeof(time));
memset(flag,false,sizeof(flag));
for(i=0;i<game;i++)
{
scanf("%d %s %d %s",&p1,m1,&p2,m2);
if(m1[0]=='r' && m2[0]=='p')
{res[p2]+=1; flag[p1]=flag[p2]=true; time[p1]+=1;time[p2]+=1;}
else if (m1[0]=='r' && m2[0]=='s')
{res[p1]+=1; flag[p1]=flag[p2]=true; time[p1]+=1;time[p2]+=1;}
else if (m1[0]=='p' && m2[0]=='r')
{res[p1]+=1; flag[p1]=flag[p2]=true; time[p1]+=1;time[p2]+=1;}
else if (m1[0]=='p' && m2[0]=='s')
{res[p2]+=1; flag[p1]=flag[p2]=true; time[p1]+=1;time[p2]+=1;;}
else if (m1[0]=='s' && m2[0]=='p')
{res[p1]++; flag[p1]=flag[p2]=true; time[p1]+=1;time[p2]+=1;}
else if (m1[0]=='s' && m2[0]=='r')
{res[p2]+=1; flag[p1]=flag[p2]=true; time[p1]+=1;time[p2]+=1;}
}
for(i=1;i<=number;i++)
{
if( flag[i] == false)
printf("-\n");
else
{
printf("%.3f\n",(double)res[i]/time[i]);
}
}
}
system("pause");
return 0;
}
2012年1月11日 星期三
acm 10878: Decode the tape
[心得] 0.008
1. ,每行都是一個ASCII 碼,每行只要注意 'o'出現的位置,轉換成相對應的ASCII碼
#include <stdio.h>
#include <string.h>
#include <math.h>
int main()
{
int length,i,sum,counter=0;
char s[20];
char output[100000];
gets(s);
while(gets(s)!=NULL)
{
if(strcmp(s,"___________")==0)
break;
sum=0;
/* for(i=0;i<=11;i++)
printf("s[%d]=%c\n",i,s[i]);*/
for(i=0;i<=11;i++)
{
if(s[i]=='o')
{
if((9-i)==0)
sum =sum+1;
else if((9-i)==1)
sum =sum+2;
else if((9-i)==2)
sum =sum+4;
else
sum = sum+pow(2,(8-i));
}
}
/*printf("%c\n",sum); */
output[counter]=sum;
counter++;
}
for(i=0;i<counter;i++)
printf("%c",output[i]);
/*counter=0;
printf("\n");*/
system("pause");
return(0);
}
1. ,每行都是一個ASCII 碼,每行只要注意 'o'出現的位置,轉換成相對應的ASCII碼
#include <stdio.h>
#include <string.h>
#include <math.h>
int main()
{
int length,i,sum,counter=0;
char s[20];
char output[100000];
gets(s);
while(gets(s)!=NULL)
{
if(strcmp(s,"___________")==0)
break;
sum=0;
/* for(i=0;i<=11;i++)
printf("s[%d]=%c\n",i,s[i]);*/
for(i=0;i<=11;i++)
{
if(s[i]=='o')
{
if((9-i)==0)
sum =sum+1;
else if((9-i)==1)
sum =sum+2;
else if((9-i)==2)
sum =sum+4;
else
sum = sum+pow(2,(8-i));
}
}
/*printf("%c\n",sum); */
output[counter]=sum;
counter++;
}
for(i=0;i<counter;i++)
printf("%c",output[i]);
/*counter=0;
printf("\n");*/
system("pause");
return(0);
}
acm 10812: Beat the Spread!
[[心得] 0.004
#include <stdio.h>
int main()
{
int a,b,data;
while(scanf("%d",&data)==1)
{
int k;
for(k=0;k<data;k++)
{
int x,y;
scanf("%d %d",&a,&b);
if(b>a||(a+b)%2!=0)
printf("impossible\n");
else
{
x = (a+b)/2;
y = a-x;
if(x<0||y<0)
printf("impossible\n");
else
printf("%d %d\n",x,y);
}
}
}
system("pause");
return 0;
}
#include <stdio.h>
int main()
{
int a,b,data;
while(scanf("%d",&data)==1)
{
int k;
for(k=0;k<data;k++)
{
int x,y;
scanf("%d %d",&a,&b);
if(b>a||(a+b)%2!=0)
printf("impossible\n");
else
{
x = (a+b)/2;
y = a-x;
if(x<0||y<0)
printf("impossible\n");
else
printf("%d %d\n",x,y);
}
}
}
system("pause");
return 0;
}
acm 10789: Prime Frequency
[心得] 0.004
用一個MAP(255 ASCII 最大好像255)陣列,存每個字母出現次數, 如果出現次數大於2才需要判斷(用暴力法判斷是否為質數) ,1非質數
#include <stdio.h>
#include <stdbool.h>
int record;
bool isprime(int temp)
{
int k;
for(k=2;k<temp;k++)
{
if(temp%k==0)
{
return false;
}
}
record =1;
return true;
}
int main()
{
int data,i,length,counter=0;
bool flag= false;
scanf("%d",&data);
scanf("\n");
while(data)
{
char s[2002];
while(gets(s)!=NULL)
{
int map[256]={0};
record=0;
data--;
counter++;
length =strlen(s);
printf("Case %d: ",counter);
/*for(i=0;i<length;i++)
printf("s[%d]= %c\n",i,s[i]);*/
for(i=0;i<length;i++)
map[s[i]]++;
/*for(i=0;i<255;i++)
printf("map[%d]= %d\n",i,map[i]); */
for(i=0;i<255;i++)
{
if(map[i]>=2)
flag = isprime(map[i]);
if(flag)
{
printf("%c",i);
flag =false;
}
}
if(!record)
printf("empty\n");
else
printf("\n");
}
}
system("pause");
return 0;
}
用一個MAP(255 ASCII 最大好像255)陣列,存每個字母出現次數, 如果出現次數大於2才需要判斷(用暴力法判斷是否為質數) ,1非質數
#include <stdio.h>
#include <stdbool.h>
int record;
bool isprime(int temp)
{
int k;
for(k=2;k<temp;k++)
{
if(temp%k==0)
{
return false;
}
}
record =1;
return true;
}
int main()
{
int data,i,length,counter=0;
bool flag= false;
scanf("%d",&data);
scanf("\n");
while(data)
{
char s[2002];
while(gets(s)!=NULL)
{
int map[256]={0};
record=0;
data--;
counter++;
length =strlen(s);
printf("Case %d: ",counter);
/*for(i=0;i<length;i++)
printf("s[%d]= %c\n",i,s[i]);*/
for(i=0;i<length;i++)
map[s[i]]++;
/*for(i=0;i<255;i++)
printf("map[%d]= %d\n",i,map[i]); */
for(i=0;i<255;i++)
{
if(map[i]>=2)
flag = isprime(map[i]);
if(flag)
{
printf("%c",i);
flag =false;
}
}
if(!record)
printf("empty\n");
else
printf("\n");
}
}
system("pause");
return 0;
}
訂閱:
文章 (Atom)