2011-2012年寒假(HDOJ学习记录)--QQ日志迁移

 2189
#include<stdio.h>
#define MAX 151
int a[MAX],b[MAX];
int num[]={
2,3,5,7,11,13,17,19,23,29,
31,37,41,43,47,53,59,61,67,71,
73,79,83,89,97,101,103,107,109,113,
127,131,137,139,149
};
int main(){
 int c,i,j,k,n;
 scanf("%d",&c);
 while(c--){
  scanf("%d",&n);
  for(i=0;i<MAX;i++){
   a[i]=b[i]=0;
  }
  a[0]=1;
  for(i=0;i<35;i++){
   for(j=0;j<MAX;j++){
    if(a[j])
    for(k=0;k+j<MAX;k+=num[i]){
     b[j+k]+=a[j];
    }
   }
   for(j=0;j<MAX;j++){
    a[j]=b[j];
    b[j]=0;
   }
  }
  printf("%d\n",a[n]);
 }
 return 0;
}
1005
#include<stdio.h>
int main(){
   //freopen("test.in","r",stdin);  
    //freopen("test.out","w",stdout); 
  int a,b,i;  
  long n;  
     int f[201];  
  f[1]=f[2]=1;   
  while(scanf("%d %d %ld",&a,&b,&n)){
   if(a==0&&b==0&&n==0) break;
     int cnt=0;
  for(i=3;i<=200;i++){ //打表找到周期
      f[i]=(a*f[i-1]+b*f[i-2])%7;
   if(f[i]==1&&f[i-1]==1)break;
   if(f[i]==0&&f[i-1]==0){cnt=1;break;}//这里有个小陷阱,如果A=7,B=7则后面都为0了        
  }
  if(cnt){printf("0\n");continue;}
  if(i>n){printf("%d\n",f[n]);continue;}
  i-=2;//i为周期
  n%=i;
  if(n==0)n=i;
  printf("%d\n",f[n]);
 }
 return 0;
}
1008
#include<stdio.h>
#define MAX 101
int main(){
 int n,m,num,start,res;
 while(scanf("%d",&n),n){
  res=0;
  start=0;
  m=n;
  while(n--){
   scanf("%d",&num);
   res=res+(num>start?(num-start)*6:(start-num)*4);
   start=num;
  }
  printf("%d\n",m*5+res);
 }
 return 0;
}
1012
#include<stdio.h>
int main()
{
    printf("n e\n");
    printf("- -----------\n");
    printf("0 1\n");
    printf("1 2\n");
    printf("2 2.5\n");
    printf("3 2.666666667\n");
    printf("4 2.708333333\n");
    printf("5 2.716666667\n");
    printf("6 2.718055556\n");
    printf("7 2.718253968\n");
    printf("8 2.718278770\n");
    printf("9 2.718281526\n");
}
1016
#include<stdio.h>
#include<string.h>
int a[25]={2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73};
int num[25],flag[25],pri[100],n;
void dsf(int x,int y)
{
      int i;
     if(y==n)
      {
         if(pri[x+1]==1)
         {
            for(i=1;i<n;i++)
            printf("%d ",num[i]);
            printf("%d\n",num[i]);
         }
         return; 
     }
     for(i=2;i<=n;i++)
     if(flag[i]==0&&pri[x+i]==1)
     {
         flag[i]=1;
         num[y+1]=i;
         dsf(i,y+1);
         flag[i]=0;
     }
}
int main()
{
     int ct=0,i;
     memset(pri,0,sizeof(pri));
     for(i=0;i<15;i++)
     pri[a[i]]=1;
     while(scanf("%d",&n)!=EOF)
     {
          memset(flag,0,sizeof(flag));
          printf("Case %d:\n",++ct);
          flag[1]=1;
          num[1]=1;
          dsf(1,1);
          printf("\n");
     }
}
1048
#include<stdio.h>
#include<string.h>
#define MAX 105
char s[MAX];
int main(){
 int i,len;
 char a[10],b[10];
 while(scanf("%s",a),strcmp(a,"ENDOFINPUT")){
  getchar();
  gets(s);
  scanf("%s",b);
  len=strlen(s);
  for(i=0;i<len;i++){
   if(s[i]>='F'&&s[i]<='Z'){
    s[i]=s[i]-5;
    continue;
   }
   if(s[i]>='A'&&s[i]<='E'){
    s[i]+=21;
   }
  }
  puts(s);
  if(strcmp(b,"END")==0){
   continue;
  }
 }
 return 0;
}
1062
#include<stdio.h>
#include<string.h>
#define MAX 1050
char s[MAX];
int main(){
 int t,i,j,len,n;
 scanf("%d",&t);
 n=0;
 getchar();
 while(t--){
  gets(s);
  len=strlen(s);
  for(i=0;i<len;i++){
   if(s[i]==' '){
    n++;
    for(j=i-1;j>=0;j--){
     if(s[j]==' ')
     break;
     printf("%c",s[j]);
    }
    printf(" ");
   }
  }
  if(n){
   for(i=len-1;i>=0;i--){
    if(s[i]==' ')
    break;
    printf("%c",s[i]);
   }
  }
  printf("\n");
 }
 return 0;
}
1106
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX 1005
char str[MAX];
int a[MAX];
int cmp(const void *a,const void *b){
 return *((int *)a)-*((int *)b);
}
int main(){
 int n,i,j,k;
 int length;
 char *s;
 while(scanf("%s",str)!=EOF){
  n=0;j=0;
  length=strlen(str);
  s=(char *)malloc(sizeof(char)*11);
  for(i=0;;i++){
   k=0;
   while(j<length&&str[j]!='5'){
    s[k]=str[j];
    k++;
    ++j;
   }
   s[k]=0;
   if(j<length&&str[j]=='5'){
    if(k==0){
     i--;
    }else{
     a[i]=atoi(s);//atoi()将字符串转换成整形数据
     n++;
    }
   }else{
    if(strlen(s)!=0){
     a[i]=atoi(s);
     n++;
    }
    break;
   }
   j++;
  }
  qsort(a,n,sizeof(int),cmp);
  printf("%d",a[0]);
  for(i=1;i<n;i++){
   printf(" %d",a[i]);
  }
  printf("\n");
 }
 return 0;
}
1131
#include<stdio.h>
#include<string.h>
#define MAX 100
#define BASE 10000
void multiply(int a[],int Max,int b) //大数乘法,注意参数的传递
{
    int i,array=0;
    for (i = Max-1; i >= 0; i--)
    {
        array += b * a[i];
        a[i] = array % BASE; // 数组每一位存放大数的四位数字
        array /= BASE;
     }
}
void divide(int a[], int Max, int b) //模拟大数除法
{
    int i, div = 0;
    for (i = 0; i < Max; i++)
    {
        div = div * BASE + a[i];
        a[i] = div / b;
        div %= b;
    }
}
int main()
{
    int a[101][MAX],i,n;
    while (scanf("%d",&n),n)
    {
     memset(a[1],0,MAX*sizeof(int));
     for (i=2, a[1][MAX-1] = 1; i < 101; i++) // 高坐标存放大数低位
        {
         memcpy(a[i], a[i-1], MAX * sizeof(int)); //h[i] = h[i-1];
            multiply(a[i], MAX, 4 * i - 2); //h[i] *= (4*i-2);
            divide(a[i], MAX, i + 1);//h[i] /= (i+1);
            multiply(a[i],MAX,i);//h[i]=h[i]*n!
        }
     for (i = 0; i < MAX && a[n][i] == 0; i++); //去掉数组前为0的数字。
        printf("%d",a[n][i++]); //输出第一个非0数
        for (; i < MAX; i++)
        {
            printf("%04d",a[n][i]);//输出后面的数,并每位都保持4位长度!(32767)
        }
        for(i=2;i<=n;i++){
         multiply(a[i],MAX,i);
        }
    printf("\n");
    }
    return 0;
}
1134
#include<stdio.h>
#include<string.h>
#define MAX 100
#define BASE 10000
void multiply(int a[],int Max,int b){
 int i,array=0;
 for(i=Max-1;i>=0;i--){
  array+=b*a[i];
  a[i]=array%BASE;
  array/=BASE;
 }
}
void divide(int a[],int Max,int b){
 int i,div=0;
 for(i=0;i<Max;i++){
  div=div*BASE+a[i];
  a[i]=div/b;
  div%=b;
 }
}
int main(){
 int a[101][MAX],i,n;
 while(scanf("%d",&n)&&n!=-1){
  memset(a[1],0,MAX*sizeof(int));
  for(i=2,a[1][MAX-1]=1;i<101;i++){
   memcpy(a[i],a[i-1],MAX*sizeof(int));
   multiply(a[i],MAX,4*i-2);
   divide(a[i],MAX,i+1); 
        }
        for(i=0;i<MAX,a[n][i]==0;i++);
        printf("%d",a[n][i++]);
        for(;i<MAX;i++){
         printf("%04d",a[n][i]);
        }
        for(i=2;i<=n;i++){
         multiply(a[i],MAX,i);
        }
        printf("\n");
 }
 return 0;
}
1236
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX 1001
struct node{
 char no[25];
 int grade;
}stu[MAX];
int cmp(const void *a,const void *b){
 struct node *c=(struct node *)a;
 struct node *d=(struct node *)b;
 if(c->grade!=d->grade)
 return d->grade>c->grade?1:-1;
 else
 return strcmp(c->no,d->no);
}
int main(){
 int score[11],t_no;
 int i,stu_num,t_num,grage,m,j,k,count;
 while(scanf("%d",&stu_num),stu_num){
  count=0;
  scanf("%d%d",&t_num,&grage);
  for(i=1;i<=t_num;i++){
   scanf("%d",&score[i]);
  }
  for(i=0;i<stu_num;i++){
   stu[i].grade=0;
   scanf("%s",&stu[i].no);
   scanf("%d",&m);
   for(j=0;j<m;j++){
    scanf("%d",&t_no);
    stu[i].grade+=score[t_no];
   }
   if(stu[i].grade>=grage){
    count++;
   }
  }
  qsort(stu,stu_num,sizeof(stu[0]),cmp);
  printf("%d\n",count);
  if(count){  
   for(i=0;i<count;i++){
    printf("%s %d\n",stu[i].no,stu[i].grade);
      }
  }  
 }
 return 0;
}
1249
#include<stdio.h>
#define MAX 10005
int a[MAX];
int main(){
 int t,n,i;
 scanf("%d",&t);
 while(t--){
  scanf("%d",&n);
  a[0]=2;
  for(i=1;i<n;i++){
   a[i]=a[i-1]+6*i;
  }
  printf("%d\n",a[n-1]);
 }
 return 0;
}
1266
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(){
 int n,i,len,m;
 char num[10];
 scanf("%d",&n);
 while(n--){
  //while(n--){
   scanf("%s",num);
   len=strlen(num);
   if(num[0]=='-'){
    printf("-");
   }
   for(i=len-1;i>=0;i--){
    if(num[i]!='0')
    break;
   }
   m=i;
   for(i;i>=0;i--){
    if(num[i]>='0'&&num[i]<='9'){
     printf("%c",num[i]);
    }
   }
   for(i=m+1;i<len;i++){
    printf("0");
   }
   printf("\n");
 // }
 }
 return 0;
}
1301
/*#include<iostream>
using namespace std;
*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX 99999
#define LEN 30
int dist[LEN];
int map[LEN][LEN];
int isvisited[LEN];
void init(int n){
 int i,j;
 for(i=0;i<=n;i++){
  for(j=0;j<=n;j++){
   map[i][j]=MAX;
  }
 }
 
}//prim
int prim(int n){
    int i,j,min,pos,sum;
 sum=0;
 //memset(isvisited,false,sizeof(isvisited));
 memset(isvisited,0,sizeof(isvisited));
 for(i=1;i<=n;i++){
  dist[i]=map[1][i];
 }
 //isvisited[1]=true;
 isvisited[1]=1;
 for(i=1;i<n;i++){
  min=MAX;
  for(j=1;j<=n;j++){
   if(!isvisited[j]&&dist[j]<min){
    min=dist[j];
    pos=j;
   }
  }
  sum+=min;
  //isvisited[pos]=true;
  isvisited[pos]=1;
  for(j=1;j<=n;j++){
   if(!isvisited[j]&&dist[j]>map[pos][j]){
    dist[j]=map[pos][j];
   }
  }
 }
 return sum;
}
 int main(){
  int i,j,m,n,len,sum;
  char start,end;
  while(scanf("%d",&n),n){
  /* if(n==0){
    break;
   }*/
   init(n);
   for(i=0;i<n-1;i++){
    //cin>>start>>m;
    getchar();
    scanf("%c%d",&start,&m);
    for(j=0;j<m;j++){
     //cin>>end>>len;
     getchar();
     scanf("%c%d",&end,&len);
     map[i+1][end-'A'+1]=len;
     map[end-'A'+1][i+1]=len;
    }
   }
   //cout<<prim(n)<<endl;
   sum=prim(n);
   printf("%d\n",sum);
  }
  return 0;
 }
1337
#include<stdio.h>//Compilation Error
#include<math.h>
int main(){
 int n,m,res;
 scanf("%d",&n); 
 //while(!=EOF){
  while(n--){
   scanf("%d",&m);
            res=(int)sqrt(m);
   printf("%d\n",res);
  }
// }
 return 0;
}
1425
#include<stdio.h>
#include<stdlib.h>
#define MAX 100000001
int a[MAX];
int cmp(const void *a,const void *b){
 return *(int *)b-*(int *)a;
}
int main(){
 int n,m,i;
 while(scanf("%d%d",&n,&m)!=EOF){
  for(i=0;i<n;i++){
   scanf("%d",&a[i]);
  }
  qsort(a,n,sizeof(int),cmp);
  printf("%d",a[0]);
  for(i=1;i<m;i++){
   printf(" %d",a[i]);
  }
  printf("\n");
 }
 return 0;
}
1562
#include<stdio.h>
int main(){
 int t,a,b,c,x;
 scanf("%d",&t);
 while(t--){
  scanf("%d%d%d",&a,&b,&c);
  for(x=1000;x<=9999;x++){
   if((x%a==0)&&((x+1)%b==0)&&((x+2)%c==0)){
    printf("%d\n",x);
    break;
   }
  }
  if(x>9999){
   printf("Impossible\n");
  }
 }
 return 0;
}
1563
#include<stdio.h>//Runtime Error(ACCESS_VIOLATION)
#include<string.h>
#define MAX 201
int a[MAX];
int main(){
 int n,i,num;
 while(scanf("%d",&n),n){
  for(i=0;i<n;i++){
   scanf("%d",&num);
   a[num]++;
  }
  for(i=0;i<MAX;i++){
   if(a[i]==1){
    printf("%d\n",i);
    break;
   }
  }
  for(i=0;i<n;i++){
   a[i]=0;
  }
  //memset();
 }
 return 0;
}
1570
#include<stdio.h>
int main(){
 int t,i,n,m;
 __int64 res;
 char a;
 scanf("%d",&t);
 while(t--){
  res=1;
  getchar(); 
  scanf("%c",&a);
  scanf("%d%d",&n,&m);
  if(a=='A'){   
   for(i=1;i<=n;i++){
    res*=i;
   }
   for(i=1;i<=n-m;i++){
    res/=i;
   }
  }else{
   for(i=1;i<=n;i++){
    res*=i;
   }
   for(i=1;i<=m;i++){
    res/=i;
   }
   for(i=1;i<=n-m;i++){
    res/=i;
   }
  }
  printf("%I64d\n",res);
 }
 return 0;
}
1709
#include<stdio.h>
#include<stdlib.h>
#define MAX 10100
int cmp(const void *a,const void *b){
 return *(int *)a-*(int *)b;
}
int c1[MAX];
int c2[MAX];
int b[MAX];
int main(){
 int a[110];
 int n,i,j,k,sum,t;
 while(scanf("%d",&n)!=EOF){
  sum=0;
  for(i=0;i<n;i++){
   scanf("%d",&a[i]);
   sum+=a[i];
  }
  qsort(a,n,sizeof(a[0]),cmp);
  for(i=0;i<MAX;i++){
   c1[i]=c2[i]=0;
  }
  c1[0]=c2[a[0]]=1;
  for(i=0;i<n;i++){
   for(j=0;j<=sum;j++){
    for(k=0;k+j<=sum&&k<=a[i];k+=a[i]){
     c2[j+k]+=c1[j];
    }
   }
   for(j=0;j<=sum;j++){
    c1[j]=c2[j];
    c2[j]=0;
   }
  }
  for(i=sum;i>=2;i--){
   if(c1[i]==0){
    continue;
   }
   for(j=1;j<i;j++){
    if(c1[j]==0)
       continue;
             c2[i-j]=1;
   }
  }
  k=0;
  for(i=0;i<=sum;i++){
      if(c1[i]==0&&c2[i]==0){
       b[k++]=i;
      }  
     }
     printf("%d\n",k);
     for(i=0;i<k;i++){
      printf(i<k-1?"%d ":"%d\n",b[i]);
     }
 } 
 return 0;
}
1720
#include<stdio.h>
int main(){
 int a,b,sum;
 while(scanf("%x%x",&a,&b)!=EOF){
  sum=a+b;
  printf("%d\n",sum);
 }
 return 0;
}
1730
#include<stdio.h>
int main(){
 int n,m,i,tom,jerry,res;
 while(scanf("%d%d",&n,&m)!=EOF){
  res=0;
  for(i=0;i<n;i++){
   scanf("%d%d",&tom,&jerry);
   if(tom>jerry){
    res^=tom-jerry-1;
   }else{
    res^=jerry-tom-1;
   }
  }
  if(res){
   printf("I WIN!\n");
  }else{
   printf("BAD LUCK!\n");
  }
 }
 return 0;
}
1849
#include<stdio.h>
int main(){
 int m,i,res,n;
 while(scanf("%d",&m),m){
  res=0;
  for(i=0;i<m;i++){
   scanf("%d",&n);
   res^=n;
  }
  if(res){
   printf("Rabbit Win!\n");
  }else{
   printf("Grass Win!\n");
  }
 }
 return 0;
}
1856
#include<stdio.h>
#include<stdlib.h>
#define MAX 10000001
struct node{
 int a;
 int b;
}boyNo[MAX];
int father[MAX];
int rank[MAX];
void Make_Set(int n){
 int i;
 for(i=0;i<=n;i++){
  father[i]=i;
  rank[i]=1;
 }
}
int Find_Set(int x){
 if(x!=father[x]){
  father[x]=Find_Set(father[x]);
 }
 return father[x];
}
void Union(int x,int y){
 x=Find_Set(x);
 y=Find_Set(y);
 if(x==y) return ;
 if(rank[x]>rank[y]){
  father[y]=father[x];
  rank[x]+=rank[y];
 }else{
  father[x]=father[y];
  rank[y]+=rank[x];
 }
}
int main(){
 int n,m,i,a,b,max,maxNum;
 while(scanf("%d",&n)!=EOF){
  max=0;
  maxNum=0;
  for(i=0;i<n;i++){
   scanf("%d%d",&a,&b);
   boyNo[i].a=a;
   boyNo[i].b=b;
   if(a>b){
    if(max<a){
     max=a;
    }
   }else{
    if(max<b){
     max=b;
    }
   }
  }
  Make_Set(max);
  for(i=0;i<n;i++){
   a=boyNo[i].a;
   b=boyNo[i].b;
   Union(a,b);
  }
  for(i=0;i<=max;i++){
   m=rank[i];
   if(maxNum<m){
    maxNum=m;
   }
  }
  printf("%d\n",maxNum); 
 }
 return 0;
}
2043
/*可以直接调用库函数判断是否为数字或字母
*/
#include<stdio.h>
#include<string.h>
#define MAX 55
char sign[]={
 " ~!@#$%^"
};
int main(){
 int m,len,num,i,j,flag;
 char str[MAX];
 scanf("%d",&m);
 while(m--){
  num=0;
  flag=0;
  scanf("%s",str);
  len=strlen(str);
  if(len>=8&&len<=16){
   for(i=0;i<len;i++){
    if(str[i]>='A'&&str[i]<='Z'){
     num++;
     break;
    }
   }
   for(i=0;i<len;i++){
    if(str[i]>='a'&&str[i]<='z'){
     num++;
     break;
    }
   }
   for(i=0;i<len;i++){
    if(str[i]>='0'&&str[i]<='9'){
     num++;
     break;
    }
   }
   if(num<3)
   for(i=0;i<len;i++){
    for(j=0;j<strlen(sign);j++){
     if(str[i]==sign[j]){
      num++;
      flag++;
      break;
     }
    }
    if(flag)
    break;
   }
   if(num>=3){
    printf("YES\n");
   }else{
    printf("NO\n");
   }
  }else{
   printf("NO\n");
  }
 }
 return 0;
}
2050
#include<stdio.h>
#define MAX 10005
int a[MAX];
int main(){
 int c,n,i;
 scanf("%d",&c);
 while(c--){
  scanf("%d",&n);
  a[0]=2;
  for(i=1;i<n;i++){
   a[i]=a[i-1]+4*i+1;
  }
  printf("%d\n",a[n-1]);
 }
 return 0;
}
2057
#include<stdio.h>
int main(){
 __int64 sum,a,b;
 while(scanf("%I64X%I64X",&a,&b)!=EOF){
  sum=a+b;
  if(sum<0){
   printf("-%I64X\n",-sum);//%I64X:以16进制无符号形式输出
  }else{
   printf("%I64X\n",sum);
  }  
 }
 return 0;
}
2079
#include<stdio.h>
#define MAX 51
int a[MAX],b[MAX];
int main(){
 int score[50],course[50];
 int i,j,k,sum,num;
 int t;
 scanf("%d",&t);
 while(t--){
  scanf("%d%d",&sum,&num);
  for(i=0;i<num;i++){
   scanf("%d%d",&score[i],&course[i]);
  }
  for(i=0;i<MAX;i++)
            a[i]=b[i]=0;
        a[0]=1;
        for(i=0;i<num;i++){
         for(j=0;j<MAX;j++){
          if(a[j]){
          for(k=0;k+j<MAX&&k<=score[i]*course[i];k+=score[i]){
           b[j+k]+=a[j];
          }
           }
         }         
         for(j=0;j<MAX;j++){
          a[j]=b[j];     
          b[j]=0;          
         }
        }
       printf("%d\n",a[sum]);
 }
 return 0;
}
2081
#include<stdio.h>
#define MAX 15
int main(){
 int i,j,n;
 char a[MAX];
 while(scanf("%d",&n)!=EOF){
  for(i=0;i<n;i++){
   scanf("%s",a);
   printf("6");
   for(j=6;j<11;j++){
    printf("%c",a[j]);
   }
   printf("\n");
  }
 }
 return 0;
}
2082
#include<stdio.h>
int main(){
 int t,i,j,k,y,sum,x;
 int num[27];
 int c1[55],c2[55];
 while(scanf("%d",&t)!=EOF){
  while(t--){
   for(i=1;i<=26;i++){
    scanf("%d",&num[i]);
   }
   for(i=0;i<55;i++){
    c1[i]=0;
    c2[i]=0;
   }
   for(i=1;i<=26;i++){
    if(num[i]){
     for(j=0;j<=num[i]*i&&j<=50;j+=i){
      c1[j]=1;
     }
     y=i;
     break;
    }
   }
   for(i=y+1;i<=26;i++){
    for(j=0;j<=50;j++){
     for(k=0;k+j<=50&&k<=num[i]*i;k+=i){
      c2[j+k]+=c1[j];
     }
    }
    for(j=0;j<=50;j++){
     c1[j]=c2[j];
     c2[j]=0;
    }
   }
   sum=0;
   for(i=1;i<=50;i++){
    sum+=c1[i];
   }
   printf("%d\n",sum);
  }  
 }
 return 0;
}
2083
#include<stdio.h>//Time Limit Exceeded
#include<stdlib.h>
#define MAX 10001
int a[MAX];
int cmp(const void *a,const void *b){
 return *(int *)a-*(int *)b;
}
int main(){
 int n,m,sum,i;
 scanf("%d",&m);
 //while(){
  while(m--){
   sum=0;
   scanf("%d",&n);
   for(i=0;i<n;i++){
    scanf("%d",&a[i]);
   }
   qsort(a,n,sizeof(int),cmp);
   for(i=0;i<n/2;i++){
    sum+=(a[n/2]-a[i]);
   }
   for(i=n/2+1;i<n;i++){
    sum+=(a[i]-a[n/2]);
   }
   printf("%d\n",sum);
  }
 //}
 return 0;
}
2148
#include<stdio.h>
#define MAX 101
int grade[MAX];
int main(){
 int i,t,n,k,count;
 scanf("%d",&t);
 while(t--){
  count=0;
  scanf("%d%d",&n,&k);
  for(i=1;i<=n;i++){
   scanf("%d",&grade[i]);
  }
  for(i=1;i<=n;i++){
   if(grade[i]>grade[k]){
    count++;
   }
  }
  printf("%d\n",count);
 }
 return 0;
}
2152
#include<stdio.h>
#define MAX 101
int a[MAX],b[MAX];
int low[MAX],high[MAX];
int main(){
 int n,m,i,j,k;
 while(scanf("%d%d",&n,&m)!=EOF){
  for(i=1;i<=n;i++){
   scanf("%d%d",&low[i],&high[i]);
  }
  for(i=0;i<MAX;i++){
   a[i]=b[i]=0;
  }
  a[0]=1;
  for(i=1;i<=n;i++){
   for(j=0;j<MAX;j++){
    if(a[j])
    for(k=low[i];k+j<MAX&&k<=high[i];k++){
     b[j+k]+=a[j];
    }
   }
   for(j=0;j<MAX;j++){
    a[j]=b[j];
    b[j]=0;
   }
  }
  printf("%d\n",a[m]);
 }
 return 0;
}
2153
#include<stdio.h>
#include<string.h>
#define MAX 11
int a[MAX][MAX];
int main(){
 int n,i,j;
 while(scanf("%d",&n)!=EOF){
  memset(a,0,sizeof(a));
  for(i=1;i<=n;i++){
   a[1][i]=i;
  }
  for(i=2;i<=n;i++){
   a[i][n]=n+i-1;
  }
  for(i=1;i<n;i++){
   a[n][i]=3*n-i-1;
  }
  for(i=2;i<n;i++){
   a[i][1]=4*(n-1)-i+2;
  }
  for(i=1;i<=n;i++){
   for(j=1;j<=n;j++){
    if(a[i][j]){
     printf("%3d",a[i][j]);
    }else{
     printf("   ");
    }
   }
   printf("\n");
  }
 }
}
2156
#include<stdio.h>
#define MAX 50000
int main(){
 int n;
 double sum,i;
 while(scanf("%d",&n),n){
  sum=0;
  for(i=2;i<=n;i++){
   sum+=(n-i+1)/i;
  }
  sum*=2;
  sum+=n;
  printf("%.2lf\n",sum);
 }
 return 0;
}
2160
#include<stdio.h>
#define MAX 25
int a[MAX];
int main(){
 int n,i,t;
 scanf("%d",&t);
 while(t--){
  a[0]=1;
  a[1]=2;
  scanf("%d",&n);
  for(i=2;i<n;i++){
   a[i]=a[i-1]+a[i-2];
  }
  printf("%d\n",a[n-1]);
 }
 return 0;
}
2163
#include<stdio.h>
#include<string.h>
#define MAX 55
int main(){
 int i,j,count=0,len;
 char a[MAX];
 while(scanf("%s",a)){
  count++;
  len=strlen(a);
  if(!strcmp(a,"STOP")){
   break;
  }
  for(i=0,j=len-1;i<=j;i++,j--){
   if(a[i]!=a[j]){
    break;
   }
  }
  if(i<=j){
   printf("#%d: NO\n",count);
  }else{
   printf("#%d: YES\n",count);
  }
 }
 return 0;
}
2201
#include<stdio.h>//Output Limit Exceeded
int main(){
 int n,m;
 double res;
 while(scanf("%d%d",&n,&m)!=EOF){
  res=1.0/n;
  printf("%.2lf\n",res);
 }
}
2309
#include<stdio.h>
#include<stdlib.h>
#define MAX 101
int score[MAX];
int cmp(const void *a,const void *b){
 return *(int *)a-*(int *)b;
}
int main(){
 int n,i,sum;
 double avg;
 while(scanf("%d",&n),n){
  i=0;
  sum=0;
  while(i<n){
   scanf("%d",&score[i]);
   i++;
  }
  qsort(score,n,sizeof(score[0]),cmp);  
  for(i=1;i<n-1;i++){
   sum+=score[i];
  }
  avg=sum/(n-2);
  printf("%d\n",(int)avg);//printf("%d\n",avg);
 }
 return 0;
}
2501
#include<stdio.h>
#define MAX 35
int a[MAX];
int main(){
 int t,n,i;
 a[2]=3;
 a[3]=5;
 for(i=4;i<=30;i++){
  a[i]=a[i-1]+2*a[i-2];
 }
 scanf("%d",&t);
 while(t--){
  scanf("%d",&n);
  printf("%d\n",a[n]);
 }
 return 0;
}
2523
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX 5050
int num[MAX],res[MAX];
int cmp(const void *a,const void *b){
 return *(int *)a-*(int *)b;
}
int main(){
 int c,n,k,j,i,x,count,y;
 scanf("%d",&c);
 while(c--){
  count=0;
  memset(res,0,sizeof(res));
  scanf("%d%d",&n,&k);
  y=n*(n-1)/2;
  for(i=0;i<n;i++){
   scanf("%d",&num[i]);
  }
  qsort(num,n,sizeof(num[0]),cmp);
  for(i=0;i<n;i++){
   for(j=i+1;j<n;j++){
    x=num[j]-num[i];
    res[x]=1;
   }
  }
  for(i=0;i<MAX;i++){
   if(res[i])
   count++;  
   if(count==k){
    printf("%d\n",i);
    break;
   }
  }
 }
 return 0;
}
2548
#include<stdio.h>
int main(){
 int t;
 double u,v,w,l,d;
 scanf("%d",&t);
 while(t--){
  d=0;
  scanf("%lf%lf%lf%lf",&u,&v,&w,&l);
  d=l/(u+v)*w;
  printf("%.3lf\n",d);
 }
 return 0;
}
2560
#include<stdio.h>
int main(){
 int t,n,m,i,j,count,num;
 scanf("%d",&t);
 while(t--){
  count=0;
  scanf("%d%d",&n,&m);
  for(i=0;i<n;i++){
   for(j=0;j<m;j++){
    scanf("%d",&num);
    if(num){
     count++;
    }
   }
  }
  printf("%d\n",count);
 }
 return 0;
}
2561
#include<stdio.h>
#include<stdlib.h>
#define MAX 11
int cmp(const void *a,const void * b){
 return *(int *)a-*(int *)b;
}
int main(){
 int c,i,n,num[MAX];
 scanf("%d",&c);
 while(c--){
  scanf("%d",&n);
  for(i=0;i<n;i++){
   scanf("%d",&num[i]);
  }
  qsort(num,n,sizeof(int),cmp);
  printf("%d\n",num[1]);
 }
 return 0;
}
2566
//暴力
#include<stdio.h>
int main(){
 int k,n,m,one,two,five,i,j,t,count;
 scanf("%d",&t);
 while(t--){
  one=two=five=0;
  count=0;
  scanf("%d%d",&n,&m);
  one=m;
  two=m/2;
  five=m/5;
  for(i=0;i<=five;i++){
   for(j=0;j<=two;j++){
    for(k=0;k<=one;k++){
     if((i*5+j*2+k==m)&&(i+j+k==n))
     count++;
    }
   }
  }
  printf("%d\n",count);
 }
 return 0;
}
2568
#include<stdio.h>
int main(){
 int c,n,num;
 scanf("%d",&c);
 while(c--){
  num=0;
  scanf("%d",&n);
  while(n){
   if(n%2){
    num++;
    n--;
   }else{
    n/=2;
   }
  }
  printf("%d\n",num);
 }  
 return 0;
}
2818
#include<stdio.h>
#include<string.h>
#define MAX 30002
int father[MAX];
int up[MAX];
int down[MAX];
int Find_Set(int x){
 int t=father[x];
 if(t!=x){
  father[x]=Find_Set(t);
  up[x]+=up[t];
 }
 return father[x];
}
void Union(int x,int y){
 x=Find_Set(x);
 y=Find_Set(y);
 if(x!=y){
  father[y]=x;
  up[y]=down[x];
  down[x]+=down[y];
 }
}
int main(){
 int i,n,x,y;
 char s;
 for(i=0;i<MAX;i++){
  father[i]=i;
  up[i]=0;
  down[i]=1;
 }
 scanf("%d",&n);
 while(n--){
  getchar();
  scanf("%c",&s);
  if(s=='M'){
   scanf("%d%d",&x,&y);
   Union(x,y);   
  }else{
   scanf("%d",&x);
   y=Find_Set(x);
   printf("%d\n",down[y]-up[x]-1);
  }
 }
 return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值