HDU2.1.4 Cake
2015-08-07 22:01
260 查看
直觉就是这题会有公式,然后和别人一起讨论了很久之后毫无进展
后来只好参考了一下别人博客里的想法
终于恍然大悟
就是把一个圆,在圆周上画点将其等分,想分成p等份需要画p个点
想分成q等份需要画q个点
并且如果都是从同一个起点开始画,那么会有gcd(p,q)个点是重合的
于是公式就是p+q-gcd(p,q)
代码如下:
后来只好参考了一下别人博客里的想法
终于恍然大悟
就是把一个圆,在圆周上画点将其等分,想分成p等份需要画p个点
想分成q等份需要画q个点
并且如果都是从同一个起点开始画,那么会有gcd(p,q)个点是重合的
于是公式就是p+q-gcd(p,q)
代码如下:
#include <cstdio> #include <iostream> using namespace std; int gcd(int a,int b) { if(a<b){ int temp=a; a=b; b=temp; } while(b!=0){ int t=a%b; a=b; b=t; } return a; } int main() { int p,q; while(scanf("%d%d",&p,&q)!=EOF){ int res=p+q-gcd(p,q); printf("%d\n",res); } return 0; }
相关文章推荐
- hive 实战笔记case3
- 数论 - 线性筛法与积性函数
- hdu 3199 Hamming Problem
- 网易云课堂 浙江大学-陈越、何钦铭-数据结构基础习题集(自测)
- 编程语言
- 网易云课堂 浙江大学-陈越、何钦铭-数据结构基础习题集(自测)
- 充满正能量的关于珍惜时间的名言
- 将数字字符串转换为整型
- C#编程:NetworkStream类的Read
- uva12532 线段树单点更新
- HDU 3081 Marriage Match II(最大流 + 并查集)
- Cocos2d-x学习笔记(四)—— 内存管理
- Lync 2013 语言包安装
- 15年的IT路
- 【js】——如何判断一个字符是否在某个字符数组中
- C++中构造函数和析构函数
- hive 实战笔记case2
- 二叉树的前序,中序,后序遍历
- [算法专题] 深度优先搜索&回溯剪枝
- Mac 安装 Ruby, Rails 运行环境