ACM第一周训练题汇总

简介: 第一周训练题汇总

 image.gif编辑

简单就不写了.

image.gif编辑

#include<stdio.h>
int main()
{
  int m,i;
  while(scanf("%d",&m)!=EOF)
  {
    long a[m],sum=0;
    for(i=0;i<m;i++) 
    {
      scanf("%ld",&a[i]);
      sum=sum+a[i];
    }
    printf("%ld\n",sum);
  }
  return 0;
}
//与上一题一样注意定义类型就好,题还是简单.

image.gif

image.gif编辑

#include <stdio.h>
int fib(int n)
{
  if(n<=1)
    return 1; 
  if(n>=2)
  {
    return fib(n-1)+fib(n-2);
  } 
}
int main()
{
  int n;
  int sum=0;
  int i,c;
  while(~scanf("%d",&n))
  {
    for(i=0;i<=n;i++)
    {
      c=fib(i);
    }
    if(i>n)
    {
      printf("%d\n",c);
    }
  }
  return 0;
}
//最基础的递归用法.

image.gif

image.gif编辑

#include<stdio.h>
int main()
{
  int m,n,r,p;
  int temp;
  scanf("%d %d",&m,&n);
  if(m<n)
  {
      temp=m;
      m=n;
      n=temp;
  }
  while((r=m%n)!=0)
  {
    m=n;
    n=r;
  }
  printf("%d\n",n);
  return 0;
}
//简单题,课本有,必须训练至纯属.

image.gif

image.gif编辑

#include <stdio.h>
int yuefen(int fenzi,int fenmu)
{
  int n=fenzi,m=fenmu;
  int r,p;
  int temp;
  if(m<n)
  {
      temp=m;
      m=n;
      n=temp;
  }
  p=m*n;
  while((r=m%n)!=0)
  {
    m=n;
    n=r;
  }
  return n;
}
int main()
{
    char s[7];
    int a,b,c,d;
    while(scanf("%s",s)!=EOF)
    {
        a=s[0]-48;
        b=s[2]-48;
        c=s[4]-48;
        d=s[6]-48;
        if(s[3]=='+')
        {
            if(a==0&&c==0)
            {
                printf("0\n");
            }
            else
            {
                int fenzi=a*d+c*b;
                int fenmu=b*d;
                int gongyueshu=yuefen(fenzi,fenmu);
                fenzi=fenzi/gongyueshu;
                fenmu=fenmu/gongyueshu;
                if(fenmu==1)
                {
                    printf("%d\n",fenzi);
                }
                else
                {
                    printf("%d/%d\n",fenzi,fenmu);
                }
            }
        }
        if(s[3]=='-')
        {
            if((double)a/b<(double)c/d) 
            {
                int fenmu=b*d;
                int fenzi=b*c-a*d;
                int gongyueshu=yuefen(fenzi,fenmu);
                fenzi=fenzi/gongyueshu;
                fenmu=fenmu/gongyueshu;
                if(fenmu==1)
                {
                    printf("-%d\n",fenzi);
                }
                else
                {
                    printf("-%d/%d\n",fenzi,fenmu);
                }
            }
            else
            {
                if((a==c&&b==d)||(a==0&&c==0))
                {
                    printf("0\n");
                }
                else
                {
                    int fenmu=b*d;
                    int fenzi=a*d-b*c;
                    int gongyueshu=yuefen(fenzi,fenmu);
                    fenzi=fenzi/gongyueshu;
                    fenmu=fenmu/gongyueshu;
                    if(fenmu==1)
                    {
                        printf("%d\n",fenzi);
                    }
                    else
                    {
                        printf("%d/%d\n",fenzi,fenmu);
                    }
                }
            }
        }
    }
    return 0;
}
//咋说呢开始也不会看了csdn才有的思路,说明自己还是太菜了.

image.gif

image.gif编辑

#include<stdio.h>
int main()
{
  int n;
  scanf("%d",&n);
  int a,b,c,i;
  while(n>0)
  {
    scanf("%d %d %d",&a,&b,&c);
    if((a+b==c)||(a+c==b)||(b+c==a))
    {
      printf("YES\n");
    }
    else
    {
      printf("NO\n");
    }
    n--;
  }
  return 0;
 }
//这题不难,理解题意就好.

image.gif

image.gif编辑

#include<stdio.h>
int main()
{
  long long n,i,q;
  scanf("%d",&n);
  long long arr[n];
  for(i=0;i<n;i++)
  {
    scanf("%lld",&arr[i]);
  }
  scanf("%lld",&q);
  long long a[q];
  for(i=0;i<q;i++)
  {
    scanf("%lld",&a[i]);
  }
  for(i=0;i<q;i++)
  {
    long long l=0;
    long long r=n-1;
    while(l<=r)
    {
      int mid=(l + r)/2;
      if(a[i]>arr[mid])
      {
        l=mid+1;
      }
      else if(a[i]<arr[mid])
      {
        r=mid-1;
      }
      else
      {
        printf("Yes\n");
        break;
      }
    }
    if(l>r)
    {
      printf("No\n");
    }
  }
  return 0;
}
//第一次写没思想然后超时了自己的代码,不过学了学长的模板,自己添加一点会了.给自己的建议就是思想会了,但是做和做到其实还是不一样的,需要加强印象和多敲几次.

image.gif

image.gif编辑

#include<stdio.h>
void bulle_sort(int arr[],int n)
{
  int i=0;
  for(i=0;i<n-1;i++)
  {
    int j=0;
    for(j=0;j<n-i-1;j++)
    {
      if(arr[j]>arr[j+1])
      {
        int temp=arr[j];
        arr[j]=arr[j+1];
        arr[j+1]=temp;
      }
    }
  }
}
int main()
{
  int n,i;
  int arr[2000]={0};
  scanf("%d",&n);
  if(n<=0)
  {
    return 0;
  }
  for(i=0;i<n;i++)
  {
    scanf("%d",&arr[i]);
  }
  bulle_sort(arr,n);
  for(i=0;i<n;i++)
  {
    printf("%d ",arr[i]);
  }
}
//简单的冒泡排序其实不写也可.

image.gif

image.gif编辑

#include<stdio.h>
#include<string.h>
int main()
{
  char arr[100010];
  char ch,c;
  scanf("%s %c %c",&arr,&ch,&c);
  int len=strlen(arr);
  int i;
  for(i=0;i<len;i++)
  {
    if(arr[i]==ch)
    {
      arr[i]=c;
    }
    else continue;
  }
  if(len==i)
  {
    printf("%s",arr);
  }
  return 0;
}
//注意现在注意是一行输入.这里还是需要提醒的,自己在这里卡了几次.

image.gif

image.gif编辑

#include<stdio.h>
void bubbl_sort(int arr[],int n)
{
  int i,j;
  for(i=0;i<n-1;i++)
  {
    for(j=0;j<n-1-i;j++)
    {
      if(arr[j]>arr[j+1])
      {
        int temp=arr[j];
        arr[j]=arr[j+1];
        arr[j+1]=temp;
      }
    }
  }
}
int main()
{
  int n,i,m;
  scanf("%d",&n);
  int arr[1000];
  while(n>0)
  {
    int flag=0;//标记是否严格单增或单减.
    scanf("%d",&m);
    for(i=0;i<m;i++)
    {
      scanf("%d",&arr[i]);
    }
    bubbl_sort(arr,m);
    for(i=0;i<m-1;i++)
    {
      if(arr[i]>=arr[i+1])
      {
        flag=1;
      }
    }
    if(m==1)
    {
      flag=0;
    }
    if(flag==1)
    {
      printf("NO\n");
    }
    else printf("YES\n");
    n--;
  }
  return 0;
}
//方法:先冒泡排序,后面用flag标记看是否严格单增最后输出
//这种输出两种情况的其实标记法非常适合
//注意总结.

image.gif

image.gif编辑

*#include<stdio.h>
int main()
{
  int a[20],b[10],c[10],i,j=0,k=0,t,m,n;
  for(i=0;i<10;i++)
  {
    scanf("%d",&a[i]);
    if(a[i]%2==0) 
            b[j++]=a[i];
    if(a[i]%2==1) 
            c[k++]=a[i];
  }
  m=j,n=k;
  for(j=0;j<m;j++)
  {
    for(i=1;i<m;i++)
    {
      if(b[i-1]>b[i]) 
                t=b[i-1],b[i-1]=b[i],b[i]=t;
    }
  }
  for(j=0;j<n;j++)
  {
    for(i=1;i<n;i++)
    {
      if(c[i-1]>c[i])
            { 
                t=c[i-1]
                c[i-1]=c[i]
                c[i]=t;
            }
    }
  }
  for(i=0;i<n;i++) 
        printf("%d ",c[i]);
  for(i=0;i<m-1;i++) 
        printf("%d ",b[i]);
  printf("%d\n",b[m-1]);
  return 0;
}
//这个题思想就是开三个数组,一个用于输入,2个用来记录奇数和偶数
//然后对俩数组进行冒泡排序后打印.————简单题

image.gif

image.gif编辑

#include<stdio.h>
#include<string.h>
int main()
{
  int len,i,j;
  char arr[100010];
  gets(arr);
  len=strlen(arr);
  for(i=2;i<len;i++)//字符串的长度比如33 表示两位 444 表示3位 
  {
    for(j=0;j<len;j++)
    {
      int l=j,r=i+j-1,flag=0;
      while(l<=r)
      {
        if(arr[r]!=arr[l])
        {
          flag=1; break;
        }
        else
        {
          l++;
          r--;
        }
      }
      if(flag==0)
      {
        for(int k=j;k<=i+j-1;k++)
        {
          printf("%c",arr[k]);
        }
        printf("\n");
      }
    }
  }
  return 0;
}

image.gif

image.gif编辑

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void my_panduan(char* str1,char* str2)
{
  while(*str1!='\0'&&*str2!='\0')
  {
    if(*str1==*str2)
    {
      str1++;
      str2++;
    }
  }
  if(*str1=='\0'&&*str2=='\0')
  {
    printf("Yes\n");
  }
  else
  {
    printf("No\n");
  }
}
int main()
{
    char a[1000],a1[1000],b[1000],b1[1000];
    int i,j=0;
    gets(a);
    gets(b);
    int n1=strlen(a),n2=strlen(b);
    for (i=0;i<n1;i++)
    {
        if (a[i]>='A'&&a[i]<='Z')
            a1[j++]=a[i]+32;
        else if (a[i]>='a'&&a[i]<='z')
            a1[j++]=a[i];
    }
    a1[j]='\0';
    j=0;
    for (i=0;i<n2;i++)
    {
        if (b[i]>='A'&&b[i]<='Z')
            b1[j++]=b[i]+32;
        else if (b[i]>='a'&&b[i]<='z')
            b1[j++]=b[i];
  }
    b1[j]='\0';
    my_panduan(a1,b1);
    return 0;
}
//这些是我自己写的超时了,我肝了很长时间并且用了指针后面发现自己多蠢真的很蠢.
//下面讲一下我在csdn某个大佬文章学的方法.
#include<stdio.h>
#include<string.h>
void play(char *s,char *k){  //用char *k,可以在函数中改变k[]的值,也改变了main函数中此数组数值
  int j=0; 
  for(int i=0;s[i]!=0;i++){    // '\0'ASCII码就是0,等价
    if(s[i]>='a'&&s[i]<='z')//若为小写字母则转大写字母,并存在数组k[]中
      k[j++]=s[i]-'a'+'A';
    else if(s[i]!=' ')//若不为空格,即大写字母时直接存入数组K
      k[j++]=s[i];  
  }
  k[j]='\0';//最后给K存入结束符\0
}
int main(){
  char a[100],b[100],c[100];
  gets(a);
  gets(b);
  play(a,c);//把数组a删去空格,小写换大写存入数组c
  play(b,a);//把数组b删去空格,小写换大写存入数组a
  if(!strcmp(c,a))//判断俩数组是否相等
    printf("YES");
  else printf("NO");
  return 0;
} 
//https://blog.csdn.net/weixin_43727125/article/details/84529785 大佬网站自己想看去看看.

image.gif

image.gif编辑

/*                 空格数    字符数 
EDCBAABCD      0        5+4
 DCBAABC       1        4+3  
  CBAAB        2        3+2
   BAA         3        2+1
    A          4        1+0*/
#include<stdio.h>
int main()
{
  char c[1];
  scanf("%c",&c);
  int i,j;
  int sz=c[0]-'A';
  for(i=0;i<sz+1;i++)
  {
    for(j=0;j<i;j++)
    {
      printf(" ");
    }
    for(j=0;j<sz+1-i;j++)
    {
      printf("%c",c[0]-j-i);
    }
    for(j=0;j<sz-i;j++)
    {
      printf("%c",c[0]-sz+j);
    }
    printf("\n");
  }
  return 0;
}
//这个题还算基础,一次ac了

image.gif

image.gif编辑

太基础不写

image.gif编辑

我现在还是不会的状态.同上一个回文,学完就发评论。

相关文章
|
12天前
|
人工智能 自然语言处理 算法
2024年6月上半月30篇大语言模型的论文推荐
大语言模型(LLMs)在近年来取得了快速发展。本文总结了2024年6月上半月发布的一些最重要的LLM论文,可以让你及时了解最新进展。
52 3
|
2月前
|
机器学习/深度学习 人工智能
斯坦福最新研究:ICLR/NeurIPS等竟有16.9%评审是ChatGPT生成
斯坦福大学研究发现,顶级学术会议评审内容中有一部分可能由大型语言模型如ChatGPT生成,揭示AI对学术领域的影响,引发学术诚信和评审质量关注。研究团队通过新框架“分布式GPT量化”更准确检测AI参与度,发现AI在评审紧迫、无引用及低互动场景中更常见,可能影响评审质量和多样性。尽管AI能提升效率,但也可能导致同质化和学术不端。该研究强调了在利用AI的同时保持学术评审质量的重要性。
31 3
斯坦福最新研究:ICLR/NeurIPS等竟有16.9%评审是ChatGPT生成
|
8月前
|
机器学习/深度学习 计算机视觉
如何在一个月写一篇论文(中文核心,SCI)
如何在一个月写一篇论文(中文核心,SCI)
106 0
|
机器学习/深度学习 人工智能 测试技术
爆火的「GPT-4 MIT本科数学满分」论文作弊,数据集本身有问题
爆火的「GPT-4 MIT本科数学满分」论文作弊,数据集本身有问题
|
机器学习/深度学习 自然语言处理 数据可视化
CVPR 2022 Oral | 视频文本预训练新SOTA!港大、腾讯ARC Lab推出基于多项选择题的借口任务(2)
CVPR 2022 Oral | 视频文本预训练新SOTA!港大、腾讯ARC Lab推出基于多项选择题的借口任务
106 0
|
存储 人工智能 自然语言处理
7 Papers | 浙大研究获SIGMOD 2023最佳论文;GPT-4拿下最难数学推理数据集新SOTA
7 Papers | 浙大研究获SIGMOD 2023最佳论文;GPT-4拿下最难数学推理数据集新SOTA
268 0
|
机器学习/深度学习 监控 自动驾驶
差点被ECCV错过的Oral论文:视频理解新框架,仅用微调的「成本」,达到预训练的「全能」
差点被ECCV错过的Oral论文:视频理解新框架,仅用微调的「成本」,达到预训练的「全能」
124 0
|
自然语言处理 计算机视觉
CVPR 2022 Oral | 视频文本预训练新SOTA!港大、腾讯ARC Lab推出基于多项选择题的借口任务(1)
CVPR 2022 Oral | 视频文本预训练新SOTA!港大、腾讯ARC Lab推出基于多项选择题的借口任务
|
机器学习/深度学习 数据采集 编解码
2.3 数据变换【李沐-斯坦福21秋季:实用机器学习中文版】
通过算法使得均值变为0,方差变为1 。把一列的数据换成是-1到1之间的数据。
70 0
|
机器学习/深度学习 自然语言处理 算法
2.4 特征工程【李沐-斯坦福21秋季:实用机器学习中文版】
因为机器学习的算法比较喜欢定义的比较好的、它能比较好的去处理的、固定长度的输入输出。
125 0