首页 > 其他分享 >ygg的分数运算

ygg的分数运算

时间:2023-01-03 15:45:38浏览次数:55  
标签:ygg 分数 frac 运算 int 质数 dfs return define

链接:https://ac.nowcoder.com/acm/contest/49343/D

ygg的分数运算

题目描述

\[给定两个数 a, b ( a, b 都是质数)。 问是否可以通过对分数 \frac{1}{a} , \frac{1}{b} ​ 通过百亿次以内的加法乘法,使得结果的分母为c \]

例如 a = 2, b = 3, c = 18

\[我们有 \frac{1}{2} + \frac{1}{3} = \frac{5}{6} , \frac{5}{6} * \frac{1}{3} = \frac{5}{18} \]

输入描述:

\[三个数a,b,c,2\le a,b,c \le 10^9,2≤a,b,c≤10^9 (a,b都是质数)\]

输出描述:

\[如果可以,输出YES,否则输出NO \]

分析:

作为菜鸡首先想到DFS,毫无疑问T了

点击查看代码
void dfs(int u)
{
    if (u > c || f)
    {
        return;
    }
    if (u == c)
    {
        f = true;
        return;
    }

    dfs(u * a);
    u /= a;
    dfs(u * b);
    u /= b;
}

换思路:
对于a,b:

  • a == b时,c 只能由 a 不断相乘获得
  • a != b时,c 只能由一些 a 与一些 b 相乘得到

考虑被约分的情况,都是质数约分后还是可以表示成一些 a 与一些 b 的乘积形式 qwq

#include <bits/stdc++.h>
using namespace std;
#define mst(x, y) memset(x, y, sizeof x)
#define endl '\n'
#define INF LONG_LONG_MAX
#define x first
#define y second
#define int long long
#define Lson u << 1, l, mid
#define Rson u << 1 | 1, mid + 1, r
#define FAST ios::sync_with_stdio(false), cin.tie(0), cout.tie(0)
const int N = 200010, MOD = 1e9 + 7;
const double EPS = 1e-6;
typedef pair<int, int> PII;
typedef unordered_map<int, int> Ump;
int T;
int a, b, c;
bool f = false;
void solve()
{
    cin >> a >> b >> c;
    // dfs(1);
    while (c % a == 0)
        c /= a;
    while (c % b == 0)
        c /= b;
    if (c == 1)
        cout << "YES" << endl;
    else
        cout << "NO" << endl;
}
signed main()
{
    FAST;
    // cin >> T;
    T = 1;
    while (T--)
        solve();
    return 0;
}

标签:ygg,分数,frac,运算,int,质数,dfs,return,define
From: https://www.cnblogs.com/Aidan347/p/17022380.html

相关文章

  • 33_Java中的位运算
    Java中的位运算符一、位运算概述位运算就是直接对整数在内存中的二进制位进行操作分类:​ 逻辑位运算符:位与(&)、位或(|)、位异(^)、位取反(~)​ 移位运算:左移(<<......
  • 运算符
    基本运算符算术运算符:+,-,*,/,%,++,--赋值运算符:=关系运算符:>,<,>=,<=,==,!=,instanceof逻辑运算符:&&,||,!位运算符:&,|,^,~,>>,<<,>>>条件运算符:?扩展赋值运算符:+=,-=,*=,/=各运算符优先......
  • 基于linux下的shell中的运算及应用实例
    运算方式及运算符号:运算符号意义(*标示常用)+,-加法,减法*,/,%乘法,除法,取余**幂运算++,--自增加,自减少<,<=,>,>=比较符号=,+=,-=,*=,......
  • C# 使用 位运算 按字节提取整数
    C#使用位运算按字节提取整数【案例说明】本案例主要介绍按位运算符和移位运算符的用法。案例从控制台输入一个十进制整数,然后将其转换成十六进制数并从控制台输出,接着......
  • 运算符
    (1)算术运算符:+、-、、/、%、++、--(2)关系运算符:<,>,==,<=,>=,!=,得到的值是boolean类型(3)逻辑运算符:||、&&、!Boolean非“!”或:其中一个条件为真就为真1、短路或“||”......
  • NumPy科学计算库学习_005_关于NumPy数组的运算
    导入模块importnumpyasnp创建两个NumPy数组arr1=np.array([1,2,3,4,5])arr2=np.array([3,4,5,6,7])print("【arr1】\n",arr1)print("【arr2】\n",arr2)【a......
  • 【C++入门】(九)位运算与常用库函数
    一.位运算符号运算&与|或~非^异或>>右移<<左移常用操作:求x的第k位数字x>>k&1lowbit(x)=x&-x,返回x的最后一位1 二.......
  • 矩阵的运算
    矩阵加法,满足结合律和交换律即结合律:\(A+(B+C)=(A+B)+C\)交换律:\(A+B=B+A\)矩阵乘法,满足结合律,但不适合交换律结合律:\(A(BC)=(AB)C\)但是一......
  • JavaScript 运算符-运算符,算数运算符,递增,递减,逻辑运算符,赋值运算符,运算符的优先级
    JavaScript运算符-运算符,算数运算符,递增,递减,逻辑运算符,赋值运算符,运算符的优先级目录JavaScript运算符-运算符,算数运算符,递增,递减,逻辑运算符,赋值运算符,运算符的优先级1......
  • C语言中的单目运算符
    !逻辑反操作 - 负值+ 正值&取地址sizeof操作数的类型长度(以字节为单位)~ 对一个数的二进制按位取反-- 前置--、后置--++前置++、后置++*  间接访问操作符(解引......