zoukankan      html  css  js  c++  java
  • 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;
    
    }
  • 相关阅读:
    The AllegroGraph Tutorial
    Using Prolog withUsing Prolog with AllegroGraph 7.1.0 AllegroGraph 7.1.0
    Prolog 语言入门教程
    Learn Prolog Now!:Chapter 3 Recursion
    What are OWL Ontologies?
    论文阅读:SkillMaN—A skill-based robotic manipulation framework based on perception and reasoning
    论文阅读:Knowledge-based instruction of manipulation tasks for industrial robotics
    Learn Prolog
    KnowRob安装过程中的相关问题记录
    Qt音视频开发17-海康sdk解码
  • 原文地址:https://www.cnblogs.com/malloc/p/2400461.html
Copyright © 2011-2022 走看看