复习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;
}

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

相关推荐
码农水水25 分钟前
小红书Java面试被问:Online DDL的INSTANT、INPLACE、COPY算法差异
算法
iAkuya1 小时前
(leetcode)力扣100 34合并K个升序链表(排序,分治合并,优先队列)
算法·leetcode·链表
我是小狼君1 小时前
【查找篇章之三:斐波那契查找】斐波那契查找:用黄金分割去“切”数组
数据结构·算法
fengfuyao9852 小时前
基于MATLAB实现任意平面太阳辐射量计算
算法·matlab·平面
放荡不羁的野指针2 小时前
leetcode150题-字符串
数据结构·算法·leetcode
苦藤新鸡2 小时前
4.移动零
c++·算法·力扣
hetao17338372 小时前
2026-01-04~06 hetao1733837 的刷题笔记
c++·笔记·算法
橘颂TA2 小时前
【剑斩OFFER】算法的暴力美学——存在重复元素Ⅱ
算法·leetcode·哈希算法·散列表·结构与算法
Boilermaker19922 小时前
[算法基础] DFS
算法
bubiyoushang8882 小时前
MATLAB比较SLM、PTS和Clipping三种算法对OFDM系统PAPR的抑制效果
数据结构·算法·matlab