第一次考核

金铲铲,启动!

思路:
注意题目说:大于50都是5,所以第一步判断,a,b里最小的大于50,一定是10

第二步,可以交换金币,但最多交换5枚,所以我们直接把大的个位数小于等于5的给小的,再进行比较

点击查看代码
#include <stdio.h>

int max(int a,int b)
{
    if(a > b)
        return a;
    return b;
}
int min(int a,int b)
{
    if(a < b)
        return a;
    return b;
}
int main()
{
    int a,b;
	scanf("%d %d",&a,&b);
    int x = min(a,b);//比较大小,不会的去csdn看这个函数
    if(x > 50)
        printf("10\n");
    else
    {
        int y = max(a,b);
        x += y%10;    
        y = y/10;
        y = min(y,5); 
		printf("%d\n",x / 10 + y );
    }
}

ps:说实话,这个题数据水了,例如49,69这个数据,

买西瓜

思路:他要分成两半且是偶数,我们知道,奇+奇=偶,奇+偶=奇,偶+偶=偶,
所以他一定要是偶数被分成两个偶数

点击查看代码
#include <stdio.h>

int main()
{
    int n;
    scanf("%d",&n);
    if(n<=2)
    {
		printf("NO\n");
        return 0;
    }
    n -= 2;
    if(n%2)
		printf("NO\n");
    else
        printf("YES\n");
}

近似素数

思路:暴力美学

点击查看代码
#include <stdio.h>

int prime(int n)
{
    for(int i=2;i<=n/i;i++)
    {
        if(n%i==0) 
            return 0;
    }
    return 1;
}
int cnt,ans;
int main()
{
    int n;  
    scanf("%d",&n);
    for(int i=2;i<=n;i++)
    {
        for(int j = 2;j<i;j++)
        {
            if(prime(j)&&i%j==0) 
                cnt++; 
        }
        if(cnt==2) 
            ans++;
        cnt=0;
    }
	printf("%d\n",ans);
    return 0;
}

智商检测题

思路:
题目就是让你找到奇数只有一个或偶数只有一个然后输出他的位置

QAQ建议学一下数组,不用数组这样写好麻烦

点击查看代码
#include <stdio.h>
int main()
{
    int n;
	scanf("%d",&n);
    
    int odd = 0,even = 0,indxodd = 0,indxeven = 0;
    for(int i = 1;i <= n;i ++)
    {
        int x;
        scanf("%d",&x);
        
        if(x%2==0)
        {
            even++;
            indxeven = i;
        }
        else
        {
            odd++;
            indxodd = i;
        }
    }
    
    if(odd > even)
		printf("%d\n",indxeven);
    else
        printf("%d\n",indxodd);
}

国旗

思路:每行只能有一种颜色相邻两行颜色不能相同。按照这种标准判断,

点击查看代码
#include "stdio.h"

int main()
{
    int n, m;
    char c, d;
    //变量c, d用来记录每行第一个网格的颜色,c所在的行数比d大。
    int f = 1;
    //用来判断国旗是否符合标准,f=1说明符合,f=0说明不符合。初始默认符合标准。
    scanf("%d %d", &n, &m);
    //输入n,m的值
    getchar();
    //读入字符的函数,在这里用来读入“回车”(n,m输入后会输入回车,这个回车会影响后续数据的读入, 所以要先读入)。
    for(int i = 0;i < n;i ++)//判断开始。
    {
        c = getchar();
        //读入每行第一个网格的颜色,这里之所以用字符变量是因为数据输入的时候没有空格。
		//举个例子,如果用整型的话会把“111”当成一个数字读入,不能当成3个1。用字符变量的话每个1都会读入一次。有利于我们进行判断。
        for(int j = 1;j < m;j ++)//每行第2个输入到最后一个。
        {
            char x;
            
            x = getchar();//读入颜色。
            
            if(x != c)//如果和第一个颜色不相同就说明不标准。
            {
                f = 0;
                
                break;//直接停止判断,因为已经不标准了,接下来没必要判断了。
            }
        }
        
        if(i != 0 && c == d)//特殊判断第一行,因为第一行没有上一行。c=d说明当前行的颜色与上一行相同。不符合标准。
        {
            f = 0;
            
            break;//直接跳出,同理。
        }
        
        d = c;//将本行第一个颜色的元素存下来,下一行可以用来判断两行颜色是否相同。
        
        if(f == 0)//不标准直接跳出。
        {
            break;
        }
        
        getchar();//用来读入每行最后一个回车,作用前面已经说过了,类似。
    }
    //判断结束
    if(f == 1)//国旗标准输出YES,不标准输出NO。
    {
        printf("YES");
    }
    else
    {
        printf("NO");
    }
    
    return 0;
}

优雅序列

点击查看代码
#include <stdio.h>

int a[10000];
int main() {
    
    int n, d;
    scanf("%d %d",&n,&d);
    for (int i = 0; i < n; i ++ ) {
        scanf("%d",&a[i]);
    }
    int ans = 0;
    for (int i = 1; i < n; i ++ ) {
        if (a[i] <= a[i - 1]) {
            int t = abs(a[i] - a[i - 1]) / d + 1;
            ans += t;
            a[i] += t * d;
        }
    }
    printf("%d\n",ans);
    return 0;
}

简单输出

思路:坑点比较多,首先「 这是直角引号,然后\这个要输出需要转义字符

点击查看代码
#include <stdio.h>

int main()
{
    printf("abc%defghijklm\\n");
}

掷骰子

思路:
这个建议去csdn看看学一学最小公倍数怎么写,当然这题也可以直接把情况都列出来

点击查看代码
#include<stdio.h>

int main() {
    int a, b;
    scanf("%d%d", &a, &b);
    int ans = a;
    if(b>a) ans = b;
    int res = a;
    if(b<a) res = b;
    int num = 6-ans;
    num++;
    if(num == 1) printf("%d/%d", 1, 6);
    if(num == 2) printf("%d/%d", 1, 3);
    if(num == 3) printf("%d/%d", 1, 2);
    if(num == 4) printf("%d/%d", 2, 3);
    if(num == 5) printf("%d/%d", 5, 6);
    if(num == 6) printf("%d/%d", 1, 1);
    return 0;
}

翻译问题

思路:这题需要用到字符串的知识,把两个一个从前往后,一共从后往前遍历
看看是不是相等

点击查看代码

#include <stdio.h>
int main()
{
    char s[1000],ss[1000];
     scanf("%s %s",s,ss);
    int cnt = 0;
    while(s[cnt]!='\0')
    {
        cnt++;
    }
    
    for(int i = 0;i < cnt;i ++)
    {
        if(s[i] != ss[cnt-i-1])
        {
            printf("NO\n");
            return 0;
        }
    }
    
    printf("YES\n");
}

Hello World

点击查看代码
#include <stdio.h>
int main()
{
    int n;
    scanf("%d",&n);
    
    for(int i = 1;i <= n;i ++)
    {
		printf("Hello");
    }
	printf(" World\n");
}

升级咯

点击查看代码
#include <stdio.h>
int d[1000];
int main() 
{
    int n, a, b;
    scanf("%d",&n);
    for (int i = 0; i < n - 1; i ++ ) {
        scanf("%d",&d[i]);
    }
    scanf("%d %d",&a,&b);
    int ans = 0;
    for (int i = a - 1; i < b - 1; i ++ ) {
        ans += d[i];
    }
    printf("%d\n",ans);
    return 0;
}

总结:想要ak还是要往后学一点的

posted @ 2023-09-18 12:16  清初  阅读(364)  评论(0编辑  收藏  举报