codeforces 495B. Modular Equations 解题报告
2024-10-15 01:39:14
题目链接: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 。
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
using namespace std; int main()
{
#ifndef ONLINE_JUDGE
freopen("in.txt", "r", stdin);
#endif // ONLINE_JUDGE
int a, b;
while (scanf("%d%d", &a, &b) != EOF)
{
int ans = ;
int mul = a - b;
if (mul == )
printf("infinity\n");
else
{
bool flag = false;
for (int i = ; i*i <= mul; i++)
{
if (mul % i == )
{
if (i > b)
ans++;
if (mul/i > b && mul/i != i) // 注意
ans++;
}
}
printf("%d\n", ans);
}
}
return ;
}
最新文章
- Android Git 客户端
- MyBatis学习总结_14_Mybatis使用技巧总结
- poj 3694 Network
- TP分析
- iOS web与js的简单交互
- 怎样在 Swift 项目中使用 CocoaPods
- golang实现tcp接入服务器
- 结构-行为-样式 - Angularjs 环境下Ztree结合JqueryUI实现拖拽
- centos6.5 ssh免密码登陆
- 正则和grep——再做正则就去死
- dubbo源码—service export
- p2p 打洞技术
- Crystal Reports报表使用 [一]
- 依赖注入demo
- Jquery获取当前页面中的复选框选中的内容
- Linux 小知识翻译 - 「Shell 脚本」
- 添加AD RMS role时,提示密码不能被验证The password could not be validated
- HDU4328 Cut the cake(动规:最大子矩形问题/悬线法)
- 【文文殿下】 [SDOI2013]保护出题人 题解
- centos下安装python3.6.2