杭电试题1017之简单数学题

         做到这道题大多数人你可能会遇到presentation Error。这个比较正常,但是此题是有点不正常,题目的大意是给定的两个整数n和m,数一数的整数对(A,B),要求是0 <A <B <n和(A^2 + B^ 2+ m)/(AB)是一个整数

        它的格式是多输入的第一行是一个整数N,然后空一行,随后由N个输入块。每个输入块是在问题描述中表示的格式。
输出格式包括N输出块。输出块之间有一个空行。

就是说开始有一个数N,在N后面有一个空行,然后是有N个模块,在每个模块内部都有不定的输入m,n的对数,每个模块都是以0 0结束的并且每个模块之间有空行(注意最后一个模块是不需要空行的)。但是有很多同学的却是按照这个来做的,就是不能AC而且持续的presentation Error。这个就是题目的问题了。请看看下面这个例子:

3                 这个就是3表示N,后面3个模块每个模块空行注意最后一个不要空行。
                  还要说一点就是在OJ判断的时候这里是没有空行的,这里只是按照题目来写的,但是答案却没有,这是OJ的错误很多同学都是在这里出错  
10 1              
实际 上很多同学是没有错的,再次说明一下希望可以帮助到还在纠结的同学
2 5               还有一点u型要说明的是题目中a^2是表示平方但是真正的电脑上不是,电脑上表示异或,这里用a*a就好
3 3               在表示  (A^2 + B^ 2+ m)/(AB)是整数时有两中表示方法:            
6 8               一是利用取余的方法,结果是整数必定可以整除取余就是0了。
0 0               二十利用强制类型转换,既然是整数,那我让一次变成浮点型的,一次变成整数型的,如果整除的话,两次结果应该是一样的,    
                   下面的代码采用大二种方法最后要注意的是Case中的C要大写
2 9
3 7
0 0

6 6
5 4 
9 8
0 0
这里不要多空一行
#include<iostream>
using namespace std;
int main()
{
    int m,n,M,i,j,k,t,N;
    cin>>M;
for(t=1;t<=M;t++)
    {    N=0;
    while((cin>>n>>m)&&(m||n))
    {     
        k=0;
        for(i=2;i<n;i++)
            for(j=1;j<i;j++)
                if((i*i+j*j+m)/(double(i)*j)==(i*i+j*j+m)/(i*j))
                    k++;
                N++;
                cout<<"Case"<<" "<<N<<":"<<" "<<k<<endl;
                
    }
    if(t<M)
        cout<<endl;
    
    }
    
    return 0;
}








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值