作业四--枚举,迭代

平方数:

这个题目其实是很简单的哦,就是直接枚举暴力就可以了哦。唯一要注意的就是因为有x*x,因此要小心就是可能在计算x*x的时候会溢出,因此要开__int64位!

#include <stdio.h>
#define MAX 1000

int main()
{
    int n;
    scanf("%d",&n);
    __int64 a[MAX];
    while(n){
        int i;
        __int64 x;
        for(i=0;i<n;i++){
            scanf("%I64d",&x);
            a[i]=x;
        }
        int j;
        int cnt=0;
        for(i=0;i<n;i++){
            for(j=0;j<n;j++){
                if(a[i]==a[j]*a[j]){
                    cnt++;      //如果符合条件就加一
                }
            }
        }
        printf("%d\n",cnt);
        scanf("%d",&n);
    }
    return 0;
}

N!

这个题目要小心的就是0!=1,还有就是同余定理的运用哦!

#include <stdio.h>
#include <math.h>
#define num 10007
int main(){
    int n;
    while(scanf("%d",&n)!=EOF && n!=-1){
        int res=1;
        for(int i=n;i>1;i--){
            res=res*i%num;
        }
        printf("%d\n",res);
    }
}

字母三角形和字母圣诞树

这种题目就是根据题目来模拟哦,考试一定会有一个这样的模拟题的,因此这种题目一定要掌握哦。还有这种题目要注意个细节就是要用getchar()来吸收scanf中落下的回车符号。

#include <stdio.h>
int main(){
    char x;
    int cnt=1;
    while(scanf("%c",&x)!=EOF && x!='#'){
        getchar();//吸收空格哦
        printf("case %d:\n",cnt);
        int h=x-'A'+1;
        char m=x;
        for(int i=0;i<h;i++){ 
                //空格
                for(int j=0;j<i;j++) printf(" ");
                for(char i='A';i<=m;i++){
                    printf("%c",i);
                }
                for(char i=m-1;i>='A';i--){
                    printf("%c",i);
                }
                printf("\n");
                m--;
        }
        cnt++;
    }
    return 0;
}

爱你一生一世

这个题目是一个很典型的组合数的题目哦。同时这个题目如果从正面来做就要小心m=1时这个特殊情况哦。

#include <stdio.h>
#include <math.h>
#define num 10007
int gcd(int x,int y){
    return y?gcd(y,x%y):x;
}
int main(){
    int k;
    scanf("%d",&k);
    while(k--){
        int n,m;
        scanf("%d %d",&n,&m);
        //正难则反
        int x=n*n-n-m*m+m;
        int y=n*n-n; 
        if(x%y==0) printf("%d\n",x/y);
        else printf("%d/%d\n",x/gcd(x,y),y/gcd(x,y));
    }
}

Repete one 

这个题目就是先排除一定没有答案的偶数和5的倍数,其他的都会有答案,因此采用暴力的方法哦。

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main(){
    int k;
    scanf("%d",&k);
    while(k--){
        int n;
        scanf("%d",&n);
        if(n%2==0||n%5==0) printf("0\n");
        else if(n==1) printf("1\n");
        else{
            int x=1,cnt=1,wei=10;
            while(x){
                x=(x+wei)%n;
                cnt++;
                wei=wei*10%n;
            }
            printf("%d\n",cnt);
        }
    }
    return 0;
}

比赛

这个题目就是直接根据题目意思来写就可以了哦。

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>

int main(){
    int k;
    scanf("%d",&k);
    while(k--){
        int n;
        scanf("%d",&n);
        int cnt=0,ans=0;
        while(n!=1){
            int n1=n,t=1;
            while(n1){
                n1/=2;t*=2;
            }
            t/=2;
            ans+=t/2;
            cnt++;
            n-=t/2; 
        }
        printf("%d %d\n",cnt,ans);
    }
    return 0;
}

A+B IV
这个题目就是暴力+注意一些细节就好啦。

#include<stdio.h>
int main ()
{
    int K,a,b,c;
    scanf ("%d",&K);
    while (K--){
        scanf ("%d+%d=%d",&a,&b,&c);
        if (a+b==c){
            printf ("0\n");
        }
        int d=a,e=b,m=0,n=0;
        while (a+b!=c){
            d=d*10,e=e*10,m++,n--;
            if (d+b==c){
                printf ("%d\n",m);
                a=d;
            }
            if (a+e==c&&d+b!=c){
                printf ("%d\n",n);
                b=e;
            }
        }
    }
    return 0;
}


 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值