新赛初赛1 (C--F)bulid by [打铁匠]hchlqlz at 2015-11-21 18:17
Rating:2074
C:
#include<stdio.h>
int main()
{
  int n,m;
  char s[21][21];
  while(scanf("%d%d",&n,&m)!=EOF)  //首先输入n、m,如果到达文件末尾,scanf返回值为-1,就退出循环
  {
    for(int i=0;i<n;i++)
      scanf("%s",s[i]);  //总共n行,将第i行的字符保存在s[i]里面
    int flag=1; //如果一个也没有flag为1,刚开始为1
    for(int i=0;i<n;i++)
      for(int j=0;j<m;j++)
      {
        if(s[i][j]=='@')  //遍历这个二维数组,如果存在@,那么就输出坐标
        {
          if(flag==1)  //第一个输出没有空格,后面的在(前加一个空格,这样最后一个后面就没有空格
          {
            printf("(%d,%d)",i,j);
            flag=0;  //输出一个后flag赋值为0
          }
          else
          {
            printf(" (%d,%d)",i,j);
          }
        }
      }
    if(flag==1) printf("-1\n"); //如果flag为1,表示一个都没有,输出-1
    else printf("\n"); //换行
  }
  return 0;
}
D:
#include<stdio.h>
#include<string.h>
int main()
{
  //其实不难,只要去做
  //最主要,不要被大量的字符、格式控制、输入什么的吓到,其实scanf("%s",s);最好用了
  char s[3];    //存放变量名
  while(scanf("%s%s",s,s)!=EOF) //int x,y; 第一个输入没有,第二个字符串有用
  {
    char a=s[0]; //让a为x
    char b=s[2]; //让b为y
    int x,y,tmp; //x、y就是a、b的值
    scanf("%s%s%d;",s,s,&tmp); //fu x 10; fu没用,s[0]就是x,tmp是值,后面有个;
    if(s[0]==a) x=tmp; //如果s[0]是a,那么x=tmp,否则y=tmp;
    else y=tmp;
    scanf("%s%s%d;",s,s,&tmp);//同上
    if(s[0]==a) x=tmp;
    else y=tmp;
    while(1) //死循环,知道End!结束
    {
      scanf("%s",s); //首先输入一个字符串,如果是End!就退出,其实也可以直接比较s[0]和'E'的
      if(strcmp(s,"End!")==0) break;
      if(strcmp(s,"Add")==0) //也可以比较s[0]和'A'的
      {
        scanf("%s%s",s,s); //输入两个字符串,因为不会出现x、x的情况,如果会出现,可以再弄一个s1,分别存放
        if(s[0]==a) y+=x; //如果s[0]是a,那么说明是y+=x;
        else x+=y; //同上
      }
      else if(strcmp(s,"Sub")==0) //这四个,代码都差不多
      {
        scanf("%s%s",s,s);
        if(s[0]==a) y-=x;
        else x-=y;
      }
      else if(strcmp(s,"Mul")==0)
      {
        scanf("%s%s",s,s);
        if(s[0]==a) y*=x;
        else x*=y;
      }
      else
      {
        scanf("%s%s",s,s);
        if(s[0]==a) y/=x;
        else x/=y;
      }
    }
    printf("%d %d\n",x,y); //输出x、y
  }
  return 0;
}
E:
#include<stdio.h>
int fun(int x)
{
  int tmp=x; //保存值
  while(x!=1) //如果x==1,退出
  {
    if(x%2==1) return -tmp; //如果x不等于1且是一个奇数,就输出负的原值
    x>>=1; //x除等于2
  }
  return tmp; //如果一直到1为之,x的值都是偶数,说明一开始x只包含2这个质因子,那么这一项是2的次方倍,那么是正的
}
int main()
{
  int n,sum;
  while(scanf("%d",&n)!=EOF) //输入一个n
  {
    sum=0;  //对于每一个测试样例,刚开始总和为0
    for(int i=1;i<=n;i++)  //遍历这n项
    {
      sum+=fun(i);  //fun(i)为自定义的函数,表示第i项的值,把这i项相加
    }
    printf("%d\n",sum); //输出
  }
  return 0;
}
F:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>
int main()
{
  int a[20][2];
  int n;
  while(scanf("%d",&n)!=EOF) //首先输入提示的数量,因为有多个这样的测试样例,所以外边加一个while(scanf()!=EOF)
  {
    for(int i=0;i<n;i++)     //输入n个提示
    {
      scanf("%d%d",&a[i][0],&a[i][1]); //每个提示的x保存在a[i][0],y保存在a[i][1]
    }
    for(int i=1;i<=100000;i++)  //士兵最多十万个,从1开始遍历这十万个,找出最先满足的那一个
    {
      int j;
      for(j=0;j<n;j++)
      {
        if(i%a[j][0]!=a[j][1]) break;  //如果有一个不满足,就提早退出
      }
      if(j>=n)  //如果没有提早退出,说明这个是满足条件的,就输出,并且结束查找
      {
        printf("%d\n",i);
        break;
      }
    }
  }
  return 0;
}
1 reply by SXD at 2015-12-17 22:17
Rating:1239
回复
要回复,请先登录

T^T Online Judge

[BUG反馈] [FAQ] [闽ICP备17026590号-1]
当前版本:3.24 系统时间: