HDU 1722 Cake (数论 gcd)(Java版)

Big Number

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1722

    ——每天在线,欢迎留言谈论。

题目大意:

给你两个数 n1,n2 。

然后你有一块蛋糕,提前切好,使得不管来 n1 还是 n2 个人都能够当场平均分配。

求 “提前切好” 的最小蛋糕块数。

知识点:

(请无视)公式:N = a + b + gcd(a, b) ;

思路:

(勿无视)先份成p块,然后再拼到一起,再从原来开始的地方,将蛋糕再分成q份,中间肯定会出现完全重合的块数为k,则此是需要分的块数就是 p + q - k 。

PS. K = gcd(a, b) 。

Java AC代码:

 1 import java.util.Scanner;
 2 import java.math.*;
 3 public class Main {
 4     public static Scanner scn = new Scanner(System.in);
 5     public static void main(String[] args) {
 6         int a,b;
 7         while(scn.hasNext()) {
 8             a = scn.nextInt();
 9             b = scn.nextInt();
10             System.out.println(a+b-tool.gcd(a, b));
11         }
12         System.exit(0);
13     }
14 }
15 class tool {
16     public static int gcd(int a, int b) {
17         int temp;
18         if (a < b) {
19             temp = a;
20             a = b;
21             b = temp;
22         }
23         while (b != 0){
24             temp = a;
25             a = b;
26             b = temp % b;
27         }
28         return a;
29     }
30 }

2017-07-23 17:16:21

时间: 2024-08-08 22:47:25

HDU 1722 Cake (数论 gcd)(Java版)的相关文章

HDU 1722 Cake (GCD)

Cake Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 2609 Accepted Submission(s): 1253   Problem Description 一次生日Party可能有p人或者q人参加,现准备有一个大蛋糕.问最少要将蛋糕切成多少块(每块大小不一定相等),才能使p人或者q人出席的任何一种情况,都能平均将蛋糕分食. In

hdu 1722 Cake 数学yy

题链:http://acm.hdu.edu.cn/showproblem.php?pid=1722 Cake Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 2620    Accepted Submission(s): 1364 Problem Description 一次生日Party可能有p人或者q人参加,现准备有一个大蛋糕.问最

HDU 1722 Cake

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1722 一块蛋糕切成多少块,才能使无论是来 q 个人还是 p 个人都能均分 P 个人 --> P 块 Q 个人 --> Q 块 块数最少,则减去 P Q 切法 中重合的部分 g.c.d.(p,q) #include<bits/stdc++.h> int main() { int p, q; while (~scanf ("%d%d", &p, &q)

HDU 1722 Cake 数学题

#include<iostream> #include<stdio.h> #include<math.h> using namespace std; long long gcd(long long a,long long b) { return b==0?a:gcd(b,a%b); } int main() { long long a,b; while(cin>>a>>b)//这道题居然是多CASE= =,题目也不给说一声 cout<<

hdu 4910 Problem about GCD(数论)

题目连接:hdu 4910 Problem about GCD 题目大意:给定M,判断所有小于M并且和M互质的数的积取模M的值. 解题思路:有个数论的结论,若为偶数,M=M/2. 可以写成M=pk,即只有一种质因子时,答案为M-1,否则为1.特殊情况为4的倍数,不包括4. 首先用1e6以内的素数去试除,如果都不可以为p,那么对大于1e6的情况判断一下是否为素数,是素数也可以(k=1),否则开方计算,因为M最大为1e18,不可能包含3个大于1e6的质因子. #include <cstdio> #

HDU 1162 Eddy&#39;s picture (最小生成树)(java版)

Eddy's picture 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1162 --每天在线,欢迎留言谈论. 题目大意: 给你N个点,求把这N个点连在一起的最短总距离. 思路: 假设每两两点之间都有路径,求最小生成树. AC代码:(Java) 1 import java.util.Scanner; 2 import java.math.*; 3 public class Main { 4 public static final int MAX

HDU 4983 Goffi and GCD(数论)

HDU 4983 Goffi and GCD 思路:数论题,如果k为2和n为1,那么只可能1种,其他的k > 2就是0种,那么其实只要考虑k = 1的情况了,k = 1的时候,枚举n的因子,然后等于求该因子满足的个数,那么gcd(x, n) = 该因子的个数为phi(n / 该因子),然后再利用乘法原理计算即可 代码: #include <cstdio> #include <cstring> #include <cmath> typedef long long l

hdu 4983 Goffi and GCD(数论)

题目链接:hdu 4983 Goffi and GCD 题目大意:求有多少对元组满足题目中的公式. 解题思路: n = 1或者k=2时:答案为1 k > 2时:答案为0(n≠1) k = 1时:需要计算,枚举n的因子,令因子k=gcd(n?a,n, 那么另一边的gcd(n?b,n)=nk才能满足相乘等n,满足k=gcd(n?a,n)的a的个数即为?(n/s),欧拉有o(n ̄ ̄√的算法 #include <cstdio> #include <cstring> #include

HDU 4910 Problem about GCD

Problem about GCD Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 470    Accepted Submission(s): 77 Problem Description Given integer m. Find multiplication of all 1<=a<=m such gcd(a, m)=1 (cop