Codeforces 371B Fox Dividing Cheese(简单数论)
题目链接 Fox Dividing Cheese
思路:求出两个数a和b的最大公约数g,然后求出a/g,b/g,分别记为c和d。
然后考虑c和d,若c或d中存在不为2,3,5的质因子,则直接输出-1(根据题目要求)
计算出c = (2 ^ a2) * (3 ^ a3) * (5 ^ a5) d = (2 ^ b2) * (3 ^ b3) * (5 ^ b5)
那么答案就是a2 + a3 + a5 + b2 + b3 + b5
#include <bits/stdc++.h> using namespace std; int a, b; int n, m, x; int a2, a3, a5, b2, b3, b5; int gcd(int a, int b){ return b == 0 ? a : gcd(b, a % b); } int main(){ scanf("%d%d", &n, &m); if (n == m){puts("0"); return 0;} x = gcd(n, m); a = n / x, b = m / x; while (a % 2 == 0) { a /= 2, ++a2;} while (a % 3 == 0) { a /= 3, ++a3;} while (a % 5 == 0) { a /= 5, ++a5;} while (b % 2 == 0) { b /= 2, ++b2;} while (b % 3 == 0) { b /= 3, ++b3;} while (b % 5 == 0) { b /= 5, ++b5;} if (a > 1 || b > 1){ puts("-1"); return 0; } printf("%d\n", a2 + a3 + a5 + b2 + b3 + b5); return 0; }
分类:
OJ——CodeForces
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】博客园携手 AI 驱动开发工具商 Chat2DB 推出联合终身会员
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 对象分配(Alloc)底层原理浅谈
· 聊一聊 C#异步 任务延续的三种底层玩法
· 敏捷开发:如何高效开每日站会
· 为什么 .NET8线程池 容易引发线程饥饿
· golang自带的死锁检测并非银弹
· 聊一聊 C#异步 任务延续的三种底层玩法
· 上位机能不能替代PLC呢?
· 2024年终总结:5000 Star,10w 下载量,这是我交出的开源答卷
· 一个适用于 .NET 的开源整洁架构项目模板
· .NET Core:架构、特性和优势详解