复习c语言考试-xtu

oj 1255

cpp 复制代码
#include<stdio.h>
#include<stdbool.h>

int main()
{
	int t;
	scanf("%d",&t);
	
	while(t--)
	{
		int a,b;
		scanf("%d%d",&a,&b);
		
		a=a*a;
		b=b*b;
		
		bool flag=false;
		for(int i=1;i<=15000;i++)
		{
			if(i*i==a+b||a==i*i+b||b==i*i+a)
			{
				printf("%d\n",i);
				flag=true;
				break;
			}
		}
		if(!flag)	puts("None");
	}
	
	return 0;
}

1075

cpp 复制代码
#include<stdio.h>

int gcd(int a,int b)
{
	return b>0?gcd(b,a%b):a;
}

int ans(int a,int b)
{
	int res=a*b/gcd(a,b);
	return res;
}

int main()
{
	int a,b;
	while(~scanf("%d%d",&a,&b))
	{
		if(a==0&&b==0)	break;
		
		printf("%d\n",ans(a,b));	
	}
	
	return 0;
}

1088

很奇怪,WA了一次,代码如下

cpp 复制代码
#include<stdio.h>

#define N 10007

int main()
{
	int n;
	while(~scanf("%d",&n))
	{
		if(n==-1)	break;
		
		int ans=n;
		for(int i=n-1;i>=1;i--)
		{
			ans*=i;
			ans%=N;
		}
		
		printf("%d\n",ans);
	}
	
	return 0;
}

改成这样就可以了,但是我没懂其中的逻辑关系,看了一下也没有超过int 的数据范围,是一边计算一边取模的

cpp 复制代码
#include<stdio.h>

#define N 10007

int main()
{
    int n;
    while(~scanf("%d",&n))
    {
        if(n==-1)    break;
        
        int ans=1;
        for(int i=1;i<=n;i++)
        {
            ans*=i;
            ans%=N;
        }
        
        printf("%d\n",ans);
    }
    
    return 0;
}

所以尽可能从小的开始算么,但是感觉是一样的,不懂

1078

cpp 复制代码
#include<stdio.h>

int main()
{
	char s[2];
	int cnt=0;
	while(~scanf("%s",s))
	{
		if(s[0]=='#')	break;
		
		printf("case %d:\n",++cnt);
		
		int num=s[0]-'A';
		int temp=num;
		for(int j=0;j<=num;j++)
		{
			for(int k=0;k<j;k++)	printf(" ");
			for(int i=0;i<=temp;i++)
			{
				printf("%c",i+'A');
			}
			for(int i=temp-1;i>=0;i--)
			{
				printf("%c",i+'A');
			}
			printf("\n");
			temp-=1;
			//printf("%d\n",temp);
		}
	}
	
	return 0;
}

非常激动,因为之前确实做不出来,但是今天,虽然还是本能的害怕,但是确实写出来了哈哈

1137

cpp 复制代码
#include<stdio.h>

int main()
{
	int t;
	scanf("%d",&t);
	
	while(t--)
	{
		char s[2];
		scanf("%s",s);
		
		int num=s[0]-'A';
		
		for(int i=0;i<=num;i++)
		{
			for(int j=0;j<=num;j++)	printf(" ");
			printf("%c\n",i+'A');
			
			for(int j=0;j<num-i;j++)	printf(" ");
			for(int j=0;j<2*i+3;j++)	printf("%c",i+'A');
			
			printf("\n");
		}
	}
	
	return 0;
}

激动啊,以前这题也写不出来的

相关推荐
齐落山大勇12 分钟前
数据结构——栈与队列
数据结构
进击的小头13 分钟前
陷波器实现(针对性滤除特定频率噪声)
c语言·python·算法
知无不研15 分钟前
冒泡排序算法
算法·冒泡排序·排序
毅炼17 分钟前
hot100打卡——day17
java·数据结构·算法·leetcode·深度优先
404未精通的狗20 分钟前
(数据结构)二叉树(上)
数据结构
Tisfy20 分钟前
LeetCode 3010.将数组分成最小总代价的子数组 I:排序 OR 维护最小次小
算法·leetcode·题解·排序·最小次小值
Learn Beyond Limits25 分钟前
文献阅读:A Probabilistic U-Net for Segmentation of Ambiguous Images
论文阅读·人工智能·深度学习·算法·机器学习·计算机视觉·ai
m0_7369191036 分钟前
编译器命令选项优化
开发语言·c++·算法
naruto_lnq43 分钟前
C++中的工厂方法模式
开发语言·c++·算法
千逐-沐风1 小时前
SMU-ACM2026冬训周报2nd
算法