zoukankan      html  css  js  c++  java
  • codeforces 495B. Modular Equations 解题报告

    题目链接:http://codeforces.com/problemset/problem/495/B

    题目意思:给出两个非负整数a,b,求出符合这个等式      的所有x,并输出 x 的数量,如果 x 有无限多个,那么输出 infinity。

      想了半个多小时......有个地方想遗漏了。

      a mod x == b,等价于  a = k*x + b。设 mul = a - b,那么 k*x = mul,然后就不断枚举 mul 的因子,即 kx = mul。由于 mod 出来的结果为 b,那么 k 或 x 至少有一个比 b 大。

      /***************************************

      我没有想出来的地方是,求出来两个因子 i、mul/i 只保留大的那个,然后跟 b 比较,大于的话统计个数(累计一次)。但是没有想到 i 和 mul/i 可能两个都比 b 大,那么此时应该是累计两次!

      ****************************************/

      还有一些需要注意的地方,因为 a,b最大可能达到 1e9,枚举因子的时候,平方根以内枚举即可。最后就是输出 infinity 的情况,就是 a = b,根据样例看出来的。此时 kx = 0 。

      

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstdlib>
     4 #include <cstring>
     5 #include <algorithm>
     6 using namespace std;
     7 
     8 int main()
     9 {
    10     #ifndef ONLINE_JUDGE
    11         freopen("in.txt", "r", stdin);
    12     #endif // ONLINE_JUDGE
    13     int a, b;
    14     while (scanf("%d%d", &a, &b) != EOF)
    15     {
    16         int ans = 0;
    17         int mul = a - b;
    18         if (mul == 0)
    19             printf("infinity
    ");
    20         else
    21         {
    22             bool flag = false;
    23             for (int i = 1; i*i <= mul; i++)
    24             {
    25                 if (mul % i == 0)
    26                 {
    27                     if (i > b)
    28                         ans++;
    29                     if (mul/i > b && mul/i != i)   // 注意
    30                         ans++;
    31                 }
    32             }
    33             printf("%d
    ", ans);
    34         }
    35     }
    36     return 0;
    37 }
  • 相关阅读:
    springmvc下的web.xml的配置
    Java利用Xstream注解生成和解析xml
    第十二章 多态性与抽象类
    第十一章 继承与派生 学习笔记
    车辆选择(继承)
    5-3 两点间距离计算
    5-2 时间模拟
    5-5 多边形周长计算(继承)
    4-5 求自定类型元素的最大值 (10分)
    4-4 求自定类型元素的平均 (10分)
  • 原文地址:https://www.cnblogs.com/windysai/p/4170570.html
Copyright © 2011-2022 走看看