计概杂烩2016

2016期末

三角形判断

#include <stdio.h>

/* C语言初始模板程序 */

int main(void) { 
    int a,b,c;scanf("%d%d%d",&a,&b,&c);
    if(a+b>c&&a+c>b&&b+c>a) printf("yes\n");
    else printf("no\n");
	return 0;
}

猴子吃桃

#include <stdio.h>

/* C语言初始模板程序 */

int main(void) { 
    int m,e,d,n;scanf("%d",&n);
    while(n--)
    {
        scanf("%d%d%d",&m,&e,&d);
        printf("%d\n",m-d*e>0?m-d*e:0);
    }
	return 0;
}

学英语字母

#include <stdio.h>

/* C语言初始模板程序 */

int main(void) { 
    int n;scanf("%d\n",&n);
    for(int i=1;i<=n;++i)
    {
        char c;scanf("%c\n",&c);
        if(c=='z'||c=='Z')
            printf(" \n");
        else printf("%c\n",c+1);
    }
	return 0;
}

防雾霾

#include <stdio.h>

/* C语言初始模板程序 */

int main(void) { 
    int n,m,cnt=0;scanf("%d%d",&n,&m);
    int now=m;
    for(int i=1;i<=n;++i){
        if(now<=0) ++cnt,now=m;
        int x;scanf("%d",&x);
        now-=x;
    }
    printf("%d\n",cnt+1);
	return 0;
}

找到不一样的数

#include <stdio.h>

int a[200];

int main(void) { 
    int n;scanf("%d",&n);
    for(int i=1;i<=n;++i)
    {
        int x;scanf("%d",&x);
        ++a[x];
    }
    for(int i=1;i<=100;++i)
        if(a[i]%2) 
            printf("%d\n",i);
	return 0;
}

使用桶排序的思想用下标解决问题。

集体照

#include <stdio.h>

int n,a[200];

int main(void) { 
    while(1)
    {
        scanf("%d",&n);if(n==0) break;
        for(int i=1;i<=n;++i) scanf("%d",&a[i]);
        for(int i=1;i<n;++i)
            for(int j=i+1;j<=n;++j)
                if(a[i]>a[j])
                {int tmp=a[i];a[i]=a[j];a[j]=tmp;}
        printf("%d\n",a[n/2+1]);
    }
	return 0;
}

密码风云

#include <stdio.h>

int a[20],b[20];

int main(void) {
    for(int i=1;i<=10;++i) scanf("%d",&a[i]);
    for(int i=1;i<=10;++i) scanf("%d",&b[i]);
    for(int i=1;i<10;++i) printf("%d ",(a[i]+5)%10);
    printf("%d\n",(a[10]+5)%10);
    for(int i=1;i<10;++i) printf("%d ",(b[i]+5)%10);
    printf("%d\n",(b[10]+5)%10);
	return 0;
}

计数问题

#include <stdio.h>

int a[20];

int main(void) { 
    int n,x;scanf("%d%d",&n,&x);
    for(int i=1;i<=n;++i)
    {
        int i1=i;
        while(i1)
        {
            ++a[i1%10];i1/=10;
        }
    }
    printf("%d\n",a[x]);
	return 0;
}

同样的用下标解决问题的思想

点赞狂

#include <stdio.h>

/* C语言初始模板程序 */

int main(void) { 
    int t;scanf("%d",&t);
    while(t--){
        int n,m,ans=0;scanf("%d%d",&n,&m);
        for(int i=1;i<=n;++i)
        {
            int cnt=0;
            for(int j=1;j<=m;++j)
            {
                int x;scanf("%d",&x);cnt+=x;
            }
            if(cnt>=(m+1)/2) ++ans;
        }
        printf("%d\n",ans);
    }
	return 0;
}

终极大奖

#include <stdio.h>

int a[200],b[200],c[200];

int main(void) { 
    while(1)
    {
        int n,m,now=0;scanf("%d%d",&n,&m);int n1=n;
        if(n==0&&m==0) break;
        for(int i=1;i<=n;++i) scanf("%d",&a[i]),b[i]=i+1,c[i]=i-1;
        b[0]=b[n]=1;c[1]=n;
        while(n>1)
        {
            for(int i=1;i<=m;++i) now=b[now];
            --a[now];
            if(a[now]==0)
            {
                b[c[now]]=b[now];
                c[b[now]]=c[now];
                --n;
            }
        }
        for(int i=1;i<=n1;++i)
        {
            if(a[i])
                printf("%d\n",i);
        }
    }
	return 0;
}

约瑟夫变异了,不能递推,只能模拟了

煎鸡排

#include <stdio.h>

int f(int x,int y)
{
    double n1=1.0*x*2/y;
    int n2=n1;
    if(n2-1.0*n1==0)
        return n2;
    else return n2+1;
}

int main(void) { 
	int n,m;scanf("%d%d",&n,&m);
	if(n==1) printf("2\n");
	else printf("%d\n",f(n,m));
	return 0;
}

脑筋急转弯题

posted @ 2023-12-15 16:08  hcx1999  阅读(10)  评论(0编辑  收藏  举报