• ZOJ Problem Set–1152 A Mathematical Curiosity


    Time Limit: 2 Seconds      Memory Limit: 65536 KB


    Given two integers n and m, count the number of pairs of integers (a,b) such that 0 < a < b < n and (a^2+b^2 +m)/(ab) is an integer.

    This problem contains multiple test cases!

    The first line of a multiple input is an integer N, then a blank line followed by N input blocks. Each input block is in the format indicated in the problem description. There is a blank line between input blocks.

    The output format consists of N output blocks. There is a blank line between output blocks.

    Input

    You will be given a number of cases in the input. Each case is specified by a line containing the integers n and m. The end of input is indicated by a case in which n = m = 0. You may assume that 0 < n <= 100.

    Output

    For each case, print the case number as well as the number of pairs (a,b) satisfying the given property. Print the output for each case on one line in the format as shown below.

    Sample Input

    1

    10 1
    20 3
    30 4
    0 0


    Sample Output

    Case 1: 2
    Case 2: 4
    Case 3: 5


    Source: East Central North America 1999, Practice

    重点在输出格式的控制,还有终止条件的判断,还有一点,就是浮点数不能直接用于比较,如果是整除的话,直接判断余数就可以了。解题代码如下:

    #include<iostream>
    
    #include<sstream>
    
    #include<algorithm>
    
    using namespace std;
    
    int main()
    
    {
    
      int blocks;cin>>blocks;
    
      for(int block = 0; block < blocks; block++)
    
      {
    
        string state;
    
        if(block == 0)//仅在第一次的时候有如下两个空行
    
        {
    
          getline(cin,state);//用getline 吃掉输入blocks之后的回车
    
          getline(cin,state);//题目要求的空行
    
        }
    
        
    
        int n,m;
    
        int cases = 1;
    
        while(cin>>n>>m && (n || m))//我错在这里了,要同时为0的时候才终止,我用了n && m 怪不得一直WA 呢
    
        {
    
          int count = 0;
    
          for(int a = 1; a < n; a++)
    
          {
    
            for(int b = a + 1; b < n; b++)
    
            {
    
              int den = a*a + b*b + m;
    
              int mol = a*b;
    
              if(den%mol == 0)
    
              {
    
                count++;
    
              }
    
            }
    
          }
    
          cout<<"Case "<<cases<<": "<<count<<endl;
    
          cases++;
    
        }
    
        if(block != blocks - 1)//最后一次输出没有空行
    
        {
    
          cout<<endl;
    
        }
    
      }
    
      
    
      return 0;
    
    }
  • 相关阅读:
    Leetcode192. 统计词频
    Leetcode1046. 最后一块石头的重量
    Ubuntu20.04 NS3安装配置
    Ubuntu20.04 中文输入法+截图设置+NetAnim安装
    如何注册谷歌邮箱Gmail
    HDU 2612 Find a way
    友链
    2020沈阳区域赛补题&总结
    XShell中设置便捷的复制粘贴
    Hyper Text 超文本
  • 原文地址:https://www.cnblogs.com/malloc/p/2400461.html
Copyright © 2020-2023  润新知