ACM第一周周赛题目汇总.

简介: ACM第一周周赛题目汇总.

include<stdio.h>

int main()
{

int n,r,i=0,j=0;
char arr[100];
while(~scanf("%d %d",&n,&r))
{
    if(n<0)
    {
        printf("-");
        n=n-2*n;
    }
    while(n!=0)
    {
        ++i;
        arr[i]=n%r;
        n/=r;
    }
    for(j=i;j>0;j--)
    {
        if(arr[j]>=10&&arr[j]<=16)
        {
            if(j!=1)
            {
                printf("%c",arr[j]+55);
            }
            else
            {
                printf("%c\n",arr[j]+55);
            }
            i=0;
        }
        else
        {
            if(j!=1)
            {
                printf("%d",arr[j]);
            }
            else
            {
                printf("%d\n",arr[j]);
            }
            i=0;
        }
    }
}
return 0;

}
//第一次做进制问题,也不会写,后面学长讲解了一下,然后就学会了
//讲一下思路:
//1.考虑这个数是正数还是负数. 这个进制是否大于10小于16.(因为大于10要变字母所以考虑)
//2.类比十进制转二进制的思路去推理整个进制的方法套路.
//3.输出时考虑第一步就好.

include<stdio.h>

int main()
{

int x,y,i,j;
scanf("%d %d",&x,&y);
while(x!=0||y!=0)
{
    int flag=0;
    for(i=x;i<=y;i++)
    {
        int sum=i*i+i+41;
        for(j=2;j<sum;j++)
        {
            if(sum%j==0)
            {
                flag=1;
                break;
            }
            else continue;
        }
    }
    if(flag==0)
    {
        printf("OK\n");
    }
    else
    {
        printf("Sorry\n");
    }
    scanf("%d %d",&x,&y);    
}
return 0;

}
//打印yes 或者 no 这种题目 标记的flag 方法特别好用大家学习一下经验.
 

考过了,不写了.详细看acm第一周训练题目.

include<stdio.h>

include<math.h>

int main()
{

int n,i,j;
scanf("%d",&n);
int arr[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int a,b,c,d,e;
long long sum=0,day=0;
while(n>0)
{
    sum=0;
    scanf("%d %d %d %d %d",&a,&b,&c,&d,&e);
    //算出总天数 
    if(a==d)
    {
        day=e-b;
        goto again;
    }
    for(i=a;i<d;i++)
    {
        if(i==a)
        {
            day=arr[i]-b;
        }
        else
        day=day+arr[i];
    }
    if(i==d)
    {
        day=day+e;
    }
again:    
    sum=pow(2,day)*c;
    printf("%lld\n",sum);
    n--;
}
return 0;

}
//这个题其实不难,关键在于求出天数,所以就ac啦
 

 基础冒泡排序.不写了.

include<stdio.h>

include<math.h>

void bubll_sort(int arr[],int n)
{

int i,j,tmp;
for(i=0;i<n-1;i++)
{
    for(j=0;j<n-1-i;j++)
    {
        if(abs(arr[j])<abs(arr[j+1]))
        {
            tmp=arr[j];
            arr[j]=arr[j+1];
            arr[j+1]=tmp;
        }
    }
}

}
int main()
{

int n,i;
int arr[110];
scanf("%d",&n);
while(n!=0)
{
    for(i=0;i<n;i++) scanf("%d",&arr[i]);
    bubll_sort(arr,n);
    for(i=0;i<n;i++) printf("%d ",arr[i]); 
    printf("\n");
    scanf("%d",&n);
}
return 0;

}
//冒泡加abs的运用,积累啦

include<stdio.h>

include <string.h>

int main()
{

int i,j,n;
scanf("%d",&n);
char arr[30][50], temp[50];
for(i=0; i<n;i++) scanf("%s",arr[i]);
for(i=0; i<n-1;i++)
    for(j=i+1;j<n;j++)
    {
        if(strcmp(arr[i],arr[j])>0)
        {
            strcpy(temp,arr[i]);
            strcpy(arr[i],arr[j]);
            strcpy(arr[j],temp);
        }
    }
for(i=0;i<n;++i) printf("%s ",arr[i]);
return 0;

}
//排序全家桶,基本会排序的冒泡就所有都会了,没啥特别大的难度.

 原题不写了.看第一周训练题目.

include<stdio.h>

include<string.h>

int main()
{

int len,i,j;
char arr[10000];
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;

}
//第一次写不会,后面问学长,在讲解下学会了这个题目,也很巧妙.
//这个还是flag标记的方法.雀氏好用.

include<stdio.h>

include<math.h>

int main()
{

int m,n,arr[10000],i,j;
scanf("%d",&m);
while(m--)
{
    scanf("%d",&n);
    int min=10000000;
    for(i=0;i<n;i++) scanf("%d",&arr[i]);
    for(i=0;i<n;i++)
    {
        int count=0;
        for(j=0;j<n;j++)
        {
            count+=abs(arr[i]-arr[j]);
        }
        if(min>count)
        {
            min=count;
        }
    }
    printf("%d\n",min);
}
return 0;

}
//这个题目用到的就是遍历的方法,寻找最最最小的一种情况对不?.

include<stdio.h>

include<math.h>

include<string.h>

double sum(double x)
{

return (x*x*x*x*x)-15*(x*x*x*x)+ 85*(x*x*x)- 225*(x*x)+ 274*x-121;

}
int main()
{

double l=1.5,r=2.4,n,mid;
while(fabs(r-l)>0.000000001)
{
    mid=(l+r)/2;
    n=sum(mid);
    if(n>0)
    {
        l=mid;
    }
    else if(n<0)
    {
        r=mid;
    }
    else
    {
        break;
    }
}
printf("%.6lf",mid);
return 0;

}
//学了一下学长的思路会了浮点型的二分法
//后面又跟着acwing的y总学了一些基础算法,哦哦发先,这不就是普普通通的模板么???
结束

想给自己的建议:

1.先学习算法-------->先学acwing的y总的课,把算法基础给学完.

2.学习完算法才能更高效的刷题,目前学完算法就是用x—mind做思维导图+重复敲代码的过程

不断地熟悉这些模板到时候才会变厉害.

3.还有就是心态吧,都18了还emo呢,有困难是正常的事情,多问,多学,多积累,多敲,做和做到是不一样的,希望自己严格要求自己吧.

2022.11.16.

相关文章
|
算法
蓝桥杯算法竞赛第一周题型总结
蓝桥杯算法竞赛第一周题型总结
78 0
|
存储
【蓝桥杯冲刺】蓝桥杯12届省赛C++b组真题-填空题
【蓝桥杯冲刺】蓝桥杯12届省赛C++b组真题-填空题
111 1
蓝桥杯2013年第四届真题-带分数
蓝桥杯2013年第四届真题-带分数
52 0
ACM刷题之路(十八)二分 2019暑期集训 POJ 3579 Median
ACM刷题之路(十八)二分 2019暑期集训 POJ 3579 Median
ACM刷题之路(二十)线筛素数+找规律f(n) 2019暑期集训 HDU 2585
ACM刷题之路(二十)线筛素数+找规律f(n) 2019暑期集训 HDU 2585
【蓝桥杯冲刺】蓝桥杯11届省赛C++b组真题-填空题
【蓝桥杯冲刺】蓝桥杯11届省赛C++b组真题-填空题
129 0
|
算法
【ACM】—蓝桥杯大一暑期集训Day3
【ACM】—蓝桥杯大一暑期集训Day3
105 0
|
算法
【ACM】—蓝桥杯大一暑期集训Day2
【ACM】—蓝桥杯大一暑期集训Day2
94 0
|
算法
【ACM】—蓝桥杯大一暑期集训Day1
【ACM】—蓝桥杯大一暑期集训Day1
106 0
|
算法
【ACM】—蓝桥杯大一暑期集训Day5
【ACM】—蓝桥杯大一暑期集训Day5
90 0