第三周题目周报

本周带来3道题,两道是PTA上的,一道是洛谷上的。

1. 验证“哥德巴赫猜想”
数学领域著名的“哥德巴赫猜想”的大致意思是:任何一个大于2的偶数总能表示为两个素数之和。比如:24=5+19,其中5和19都是素数。本实验的任务是设计一个程序,验证20亿以内的偶数都可以分解成两个素数之和。

输入格式:
输入在一行中给出一个(2, 2 000 000 000]范围内的偶数N。

输出格式:
在一行中按照格式“N = p + q”输出N的素数分解,其中p ≤ q均为素数。又因为这样的分解不唯一(例如24还可以分解为7+17),要求必须输出所有解中p最小的解。

输入样例:

24


输出样例:
 

24 = 5 + 19

我们可以直接写一个接口函数验证它是不是素数,然后再在主函数中需要时引用。

#include<stdio.h>
#include<math.h>
int prime(int x);
int main()
{
    int n,i;
    scanf("%d",&n);
    for(i=2;;i++)
    {
        if(prime(i)&&prime(n-i))
        {
            printf("%d = %d + %d",n,i,n-i);
            break;
        }
    }
    return 0;
}
int prime(int x)
{
    int i;
    for(i=2;i<=sqrt(x);i++)
    {
        if(x%i==0)
            return 0;
    }
    return 1;
}

2. 输出整数各位数字
本题要求编写程序,对输入的一个整数,从高位开始逐位分割并输出它的各位数字。

输入格式:
输入在一行中给出一个长整型范围内的非负整数。

输出格式:
从高位开始逐位输出该整数的各位数字,每个数字后面有一个空格。

输入样例:

123456


输出样例:
 

1 2 3 4 5 6 

本题可将此数字视为一个字符串,这样输出他的每一位就较为简单。

#include<stdio.h>
int main()
{
    char c;
    do
    {
        scanf("%c",&c);
        if(!(c>='0'&&c<='9'))
            break;
        printf("%c ",c);
    }while(c>='0'&&c<='9');
    return 0;
}

3.Apples Prologue / 苹果和虫子

题目描述

八尾勇喜欢吃苹果。她现在有 m(1≤m≤100)个苹果,吃完一个苹果需要花费 t(0≤t≤100)分钟,吃完一个后立刻开始吃下一个。现在时间过去了 s(1≤s≤10000)分钟,请问她还有几个完整的苹果?

输入格式

输入三个非负整数表示 m,t,s。

输出格式

输出一个整数表示答案。

输入输出样例

输入样例

50 10 200

输出样例

30

此题看似简单,实则不难,只是需要心思周密,注意m,t,s的范围,考虑多种可能的输入,将全部情况包含。

我第一次做这道题时,只觉十分简单,两行代码草草了事,可时一提交,却发测试点只过了一个。由此可知也不要忽视简单题,很多看着简单的题我也并不是能做得又快又好。

#include<stdio.h>
#include<math.h>
	int main()
	{
		int m,t,s,y;
		scanf("%d %d %d",&m,&t,&s);
		if(t==0)
			printf("0");
		else
		{
			y=m-ceil((double)s/t);
			if(y>=0)
				printf("%d",y);
			else
				printf("0");	
		}
		return 0;
	 } 

这次就这三道题了,虽然都不是很难,但其中很多个点也不是我迅速反应出来或者立刻想到较优解的。感谢大家阅读!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值