HDU 1017 A Mathematical Curiosity 基础题 清晰的代码+详细注释

博客讲述了在解决HDU 1017 'A Mathematical Curiosity'问题时遇到的陷阱,尤其是输入格式上的细节,如额外的空行和结束标志。作者分享了通过AC的代码,并提醒程序员注意处理类似题目时的输入格式问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这题一看就觉得很容易写,然后自信满满地写完提交,得到的大概率是PE,这题主要在表达上贼坑,早就听说HDU会有很多题在格式上坑人,名不虚传啊

杭电传送机

首先是输入一个N代表测试的组数(这次和往常不一样,开头不是多组输入,后面才要求多组输入),然后是一个空行(由于输入数据都是整型,所以可以无视这个空行,不需要在代码中表现出来),接着就是N组数据的输入,每组以n=m=0为结束标志,然后紧接着输出一个空行,但是最后一组不输出空行,所以这个空行可以在while(N--)的最后面加一个if语句来实现。


以下是我的AC代码:



#include <iostream>

using namespace std;

int main()
{
    int n,m,t;
    cin >> t;                               //测试组数
    while(t--)
    {
        int k=0;                            //题目要求每组都要清零Case 后的那个数字
        while(cin >> n >> m)                //每组输入不限,直到n=m=0;
        {
            k++;
            if(n==0 && m==0)
                break;
            int sum=0;                      //计数器清零
            for(int i=1; i<n-1; i++)        //满足0<i<j<n 这个条件(题目给的是0<a<b<n)(个人写代码习惯不同而已)
            {
                for(int j=i+1; j<n; j++)
                {
                    if((i*i+j*j+m)%(i*j)==0)               //题目给的表达式,满足就计数器加1
                        sum++;
                }
            }
            cout << "Case " << k << ": " << sum << endl;   //注意空格的表达就好了
        }
        if(t)                              //这里控制每组数据的后面加空行,但最后一组不输出空行
            cout << endl;
    }
    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值