怎样写解题报告

· · 个人记录

同学们在做完题目后,要养成总结经验教训、写解题报告的习惯。对于每一个自己不是一遍做对的题、自己觉得有难度的题、比赛中(而非作业中)见到的题,都应该写解题报告。

解题报告最好遵循以下的格式:

标题,包括题号、题目标题,并空一格写「解题报告」四个字。(写到上文标题处,并使用H1标题写在正文)

(题目链接)

题意(使用H2标题)

自己复述题意,去掉所有「讲故事」的题面,只留下最简短的题意。但是要强调重点信息,比如数据范围等。

力求让其他人看到你总结的题意后,不用看原文,就能够完成这道题目。

(注意分段在编辑器中要空一行)

题解(使用H2标题)

讲述本题的做法、遇到的难点、自己的解决方案等。

对于自己做错、后来改正的题目,以及自己觉得有难度的题目,一定要说清自己觉得难的地方解决方案

代码(使用H2标题)

粘贴你自己最后通过此题的代码。可以使用菜单栏「插入代码</>」的功能。

下面是一份解题报告示例

B2039 整数大小比较 解题报告

B2039 整数大小比较

题意

分别输入一个 [0,2^32) 范围和 [-2^31,2^31) 范围的整数,比较它们之间的大小。

题解

这个题的难点在于,两个数的数据范围并不相同,并且其中一个不能用 int 存下。

我们把其中一个数用 unsigned int 来存,记为 a;另一个用 int 存,记为 b。注意 unsigned int 要用 %u 来输入。

另一个难点是, unsigned int 和 int 不能直接比较。我们可以考虑把他们都转化成 unsigned int,去掉符号带来的问题。当 b 为负数时,它显然小于无符号的 a,所以我们可以先判断这种情况,然后在剩下的情况中把 b 转成无符号整数。

代码

#include <stdio.h>

int main()
{
    unsigned int a;
    int b;

    scanf("%u%d", &a, &b);

    if (b < 0)
    {
        printf(">");
    } 
    else
    {
        unsigned int temp_b = (unsigned int)b;
        if (a > b) 
        {
            printf(">");
        }
        else if (a == b)
        {
            printf("=");
        }
        else
        {
            printf("<");
        }
    }

    return 0;
}