Plus and Multiply

news/2025/1/12 21:57:41/

There is an infinite set generated as follows:

  • 11 is in this set.
  • If xx is in this set, x⋅ax⋅a and x+bx+b both are in this set.

For example, when a=3a=3 and b=6b=6, the five smallest elements of the set are:

  • 11,
  • 33 (11 is in this set, so 1⋅a=31⋅a=3 is in this set),
  • 77 (11 is in this set, so 1+b=71+b=7 is in this set),
  • 99 (33 is in this set, so 3⋅a=93⋅a=9 is in this set),
  • 1313 (77 is in this set, so 7+b=137+b=13 is in this set).

Given positive integers aa, bb, nn, determine if nn is in this set.

Input

The input consists of multiple test cases. The first line contains an integer tt (1≤t≤1051≤t≤105) — the number of test cases. The description of the test cases follows.

The only line describing each test case contains three integers nn, aa, bb (1≤n,a,b≤1091≤n,a,b≤109) separated by a single space.

Output

For each test case, print "Yes" if nn is in this set, and "No" otherwise. You can print each letter in any case.

Input:

5
24 3 5
10 3 6
2345 1 4
19260817 394 485
19260817 233 264

Out:

Yes
No
Yes
No
Yes

题意:原始集合中有元素 1 ,现有数字n , a , b。我们用集合中的元素乘以a,或加b 的方式构造数字,问能不能构造出n

思路:

  • 若a == 1时:集合中元素乘以a是不变的,因此这时只能用原来集合中的1,加上若干个b构造,如果n - 1 % b == 0,则可以构造,!= 0则相反。
  • 若a > 1:设当前乘完若干个a加完若干个b后数字是x(x = ((x + kb)*a + b)),看现在的x加上若干个b能不能构造出n,因此只要此时的n -  x % b == 0即可构造成功,不能的话,就要乘以a。x进入下一轮循环(加上若干b,再乘以a)。

关键:虽说可以任意顺序加b或者乘a,但事实上加若干b,有时是加0个b,所以就是*a + kb的顺序进行下去的 ,因此只需要判定n-x % b == 0即可,那为什么下列代码中是直接减去pow(a,j)再判断是否%b==0呢?

再看(x*a + k*b)*a = x*a^2 + k*a*b 注意到,后面省去的k*a*b,一定是可以由若干个b构成的,当

(n - x*a^2 )% b的时候还可以用若干k*a*b + k1*b来补齐剩余。

AC代码:

#include <bits/stdc++.h>
#define int long long
using namespace std;const int N = 1e5 + 10;int a[N];void solve(){int n,a,b; cin >> n >> a >> b;if(a == 1){if((n-1)%b==0)cout << "YES\n";else cout << "NO\n";}else{for(int j = 1;j <= n;j*=a){if((n - j) % b == 0){cout << "YES\n";return;}}cout << "NO\n";}
}signed main(){int t; cin >> t;while(t--){solve();} return 0;
}


http://www.ppmy.cn/news/204497.html

相关文章

Mybatis+Plus

一、Mybatis 原始jdbc操作的分析&#xff1a; 原始jdbc开发存在的问题如下&#xff1a; ① 数据库连接创建、释放频繁造成系统资源浪费从而影响系统性能 ② sql 语句在代码中硬编码&#xff0c;造成代码不易维护&#xff0c;实际应用 sql 变化的可能较大&#xff0c;sql 变动…

mybatis mybatis plus

单数据源 单数据源一般通过spring boot自动配置来配置 当mybatis starter和mybatis plus starter同时存在&#xff0c;加载mybatis plus (MybatisPlusAutoConfiguration比MybatisAutoConfiguration的全限定名字典序更靠前) mybatis用的配置前缀为mybatis&#xff0c;mybatis-…

Mybatis-Plus详细解读(一)Mybatis-Plus简介

一、Mybatis-Plus&#xff08;简称MP&#xff09;简介 1.简介2.特性&#xff08;了解&#xff09;3.网站 1.简介 MP是Mybatius的增强工具&#xff0c;在mybatis的基础上只增强不改变&#xff0c;可以简化开发&#xff0c;提高效率。 2.特性&#xff08;了解&#xff09; 无侵…

【MyBatisPlus】MyBatisPlus

简介 特性 无侵入&#xff1a;只做增强不做改变&#xff0c;引入它不会对现有工程产生影响 损耗小&#xff1a;启动即会自动注入基本 CURD&#xff0c;性能基本无损耗&#xff0c;直接面向对象操作 强大的 CRUD 操作&#xff1a;内置通用 Mapper、通用 Service&#xff0c;…

MyBatis Plus(七)

文章目录 TableName注解关于 autoResultMap 的说明TableId注解TableField注解什么是乐观锁乐观锁实例Version注解EnumValue注解EnumValue注解 示例代码TableLogic注解TableLogic 属性TableLogic 属性样例 TableName注解 TableName 注解用来将指定的数据库表和 JavaBean 进行映射…

SQL plus

一、简介 这是一个开发Oracle数据库的工具。简单点来说就是能用这个工具&#xff08;程序&#xff09;来登陆Oracle数据库&#xff0c;然后能操作数据库&#xff0c;只不过是以命令行的方式来操作。 这个工具哪里来的呢&#xff1f;当你安装了客户端机时&#xff0c;SQL plus也…

mybatis-plus简介、特性、架构

一、简介。 mybatis-plus简称&#xff08;MP&#xff09;是一个mybatis的增强工具&#xff0c;在mybayis的基础上只做增强不做改变&#xff0c;为简化开发、提高效率而生。 官网&#xff1a;https://mybatis.plus/或者https://mp.baomidou.com/ 二、特性。 1、无侵入&#…

MyBatis-Plus(基于Spring)

目录 初始配置 基本CRUD 常用注解 条件构造器和常用接口 QueryWrapper UpdateWrapper condition LambdaQueryWrapper LambdaUpdateWrapper 插件 分页插件 xml自定义分页 乐观锁 通用枚举 MyBatisX: 初始配置 1) 添加依赖: <packaging>jar</packaging&…