Codeforces Round 929 (Div. 3) C. Turtle Fingers: Count the Values of k(枚举,数学)

time limit per test 5 seconds
memory limit per test 256 megabytes
inputstandard input
outputstandard output

给你三个正整数 a 、 b 和 l ( a , b , l > 0 ) a 、 b 和 l ( a,b,l>0 ) abl(a,b,l>0)

可以证明,总有一种方法可以选择非负(即 ≥ 0 ) ≥0 ) 0)的整数 k 、 x k 、 x kx y y y ,使得 l = k ⋅ a x ⋅ b y l=k⋅a^x⋅b^y l=kaxby.

你的任务是找出所有这些方法中 k k k 的不同可能值的个数。

输入
第一行包含整数 t ( 1 ≤ t ≤ 1 0 4 ) t ( 1≤t≤10^4 ) t(1t104) - 测试用例的数量。

接下来的 t t t 行包含三个整数 a 、 b a 、 b ab l ( 2 ≤ a , b ≤ 100 、 1 ≤ l ≤ 1 0 6 ) l ( 2≤a,b≤100 、 1≤l≤10^6 ) l(2a,b1001l106) —测试用例描述。 ( 2 ≤ a , b ≤ 100 , 1 ≤ l ≤ 1 0 6 ) ( 2≤a,b≤100 , 1≤l≤10^6 ) (2a,b100,1l106) —测试用例描述。

输出
输出 t t t 行,其中第 i ( 1 ≤ i ≤ t ) i ( 1≤i≤t ) i(1it) 行包含一个整数,即第 i i i 个测试用例的答案。

Example
input

11
2 5 20
2 5 21
4 6 48
2 3 72
3 5 75
2 2 1024
3 7 83349
100 100 1000000
7 3 2
2 6 6
17 3 632043

output

6
1
5
12
6
11
24
4
1
3
24

注意此题给出了 5s 的时间限制,所以 O ( n 2 ) O(n^2) O(n2)是爆不了的,对于题目中的条件,需要我们找的是有多少种 k k k,但是注意此时给出了 a , b , l a,b,l a,b,l ,所以现在有三个未知量,故我们只需要枚举其中两个,就自然可以得到第三个未知量,如果你想枚举三个未知量再来进行判断不是闲的吗(说的就是我自己),而且容易TLE。

所以枚举 x x x y y y ,因为已知 x x x y y y 来解得 k k k 最为容易。
在枚举的时候需要回想起来题目条件是求多少种 k k k ,而不是多少种 x x x y y y 的组合,所以要在过程中判重。

注意过程中 a a a b b b 的各种次方相乘的时候会爆int,所以在合适的地方开 long long

  • 注意求k的时候我们运用的公式是: l a x ∗ b y \frac{l}{a^x*b^y} axbyl,首先k是正整数,所以不可能求出来k是个小数或分数,那么 a a a b b b 最大就不能超过 l l l ,并且除出来应该是个整数,所以 l l l m o d mod mod a x ∗ b y a^x*b^y axby 应该为 0 0 0

  • 接下来在判重的时候:由于 l l l 是固定的,所以只需要标记上所有出现过的 a x ∗ b y a^x*b^y axby ,就可以做到对 k k k 的判重。

代码:

#include<iostream>
#include<cstring>
#include<cmath>
#include<map>
using namespace std;
const int N = 1e5 + 10;
#define ll long longint a[N];int main() {int t; cin >> t;while (t--) {map< ll, bool > vis;	//map判重int a, b, l;cin >> a >> b >> l;long long res = 0;	for (int aa = 1;aa <= l; aa *= a) {for (int bb = 1; bb <= l; bb *= b) {ll t = (ll)aa * bb;if (l % t == 0 && !vis[t]) {res++;vis[t] = 1;	//标记重复}}}cout << res << endl;}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/750712.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Rust写一个wasm入门并在rspack和vite项目中使用(一)

rust打包wasm文档 文档地址 安装cargo-generate cargo install cargo-generate 安装过程中有问题的话手动安装cargo-generate下载地址 根据自己的系统下载压缩包&#xff0c;然后解压到用户/.cargo/bind目录下&#xff0c;将解压后的文件放到该目录下即可。 创建wasm项目 …

校园闲置物品租售系统|基于springboot框架+ Mysql+Java+B/S架构的校园闲置物品租售系统设计与实现(可运行源码+数据库+设计文档)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 目录 前台功能效果图 管理员功能登录前台功能效果图 ​编辑 用户功能模块 商品购买管理 卖家功能模块 商品…

[密码学]OpenSSL实践篇

背景 最近在写Android abl阶段fastboot工具&#xff0c;需要我在Android代码中实现一些鉴权加解密相关的fastboot命令&#xff0c;里面用到了OpenSSL。我们先来实践一下OpenSSL在Linux系统中的指令。 OpenSSL官方网站&#xff1a;OpenSSL 中文手册 | OpenSSL 中文网 1. 查看…

Spring同时集成JPA与Mybatis

Spring同时集成JPA与Mybatis 目录 Spring同时集成JPA与Mybatis ORM Spring ORM Spring ORM 同时集成JPA与Mybatis 一、创建一个SpringBoot项目 二、建立用户信息登记表 三、Web应用项目集成mysql 四、添加Spring Data JPA和Mybatis依赖 五、添加数据表映射实体类 六…

m3u8,一个超酷的 Python 库!

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 大家好&#xff0c;今天为大家分享一个超酷的 Python 库 - m3u8。 Github地址&#xff1a;https://github.com/globocom/m3u8 在网络视频传输中&#xff0c;HLS&#xff08;HTTP Live Streaming&#xff09;是一…

2.vscode 配置python开发环境

vscode用着习惯了,也不想再装别的ide 1.安装vscode 这一步默认已完成 2.安装插件 搜索插件安装 3.选择调试器 Ctrl Shift P&#xff08;或F1&#xff09;&#xff0c;在打开的输入框中输入 Python: Select Interpreter 搜索&#xff0c;选择 Python 解析器 选择自己安…

LeetCode 567. 字符串的排列

解题思路 滑动窗口的经典例题&#xff0c;直接套模板。 相关代码 class Solution {int hash1[] new int[26];int hash2[] new int[26];public boolean checkInclusion(String s1, String s2) { for(int i0;i<s1.length();i) hash1[s1.charAt(i)-a];char a[] s2.toC…

科研绘图一:箱线图(添加贝赛尔曲线)

R语言绘图系列—箱线图贝赛尔曲线 &#xff08;一&#xff09;: 科研绘图一&#xff1a;箱线图&#xff08;添加贝赛尔曲线&#xff09; 文章目录 R语言绘图系列---箱线图贝赛尔曲线&#xff08;一&#xff09;: 科研绘图一&#xff1a;箱线图&#xff08;添加贝赛尔曲线&…

Linux安装HBase的详细教程及常用方法

Linux安装HBase的详细教程及常用方法如下&#xff1a; 确保已安装Java环境 在Linux上安装HBase之前&#xff0c;首先确保已正确安装了Java环境。使用以下命令检查Java是否已安装&#xff1a; java -version如果Java没有安装&#xff0c;请先安装Java环境。 下载HBase 前往HBas…

plt保存PDF矢量文件中嵌入可编辑字体(可illustrator编辑)

背景&#xff1a; 用默认 plt.savefig() 保存图片&#xff0c;图中文字是以瞄点保存&#xff0c;而不是以文字格式。在编辑矢量图中&#xff0c;无法调整文字大小和字体。 方法&#xff1a; import matplotlib.pyplot as plt import numpy as np# ------输出的图片为illustr…

TMS与WMS:物流领域的双璧,差异与互补

在现代物流领域,运输管理系统(TMS)和仓库管理系统(WMS)是两大核心系统,它们各自扮演着不同的角色,共同推动着物流运作的高效与精准。本文将深入探讨TMS与WMS之间的区别,以及它们如何协同工作,为物流行业带来更大的价值。 一、TMS与WMS:定义与功能之异 TMS,即运输管…

基于Springboot和Redis实现的在线选课系统

1.项目简介 1.1 介绍 毕业设计真的就是demo吗&#xff1f;作为工作前的最后一个校园项目&#xff0c;毕业设计应当尽可能的贴近企业实战&#xff0c;业务不必很复杂&#xff0c;但要做到麻雀虽小五脏俱全。本期学长跟大家一起分享如何开发一个在线选课系统&#xff0c;需求也…

2.二进制的方式读写文件

文章目录 写入文件代码运行结果 读出文件代码运行结果 文件打开模式标记&#xff08;查表&#xff09; 写入文件 ------写文件一共五步&#xff1a;------ 第一步&#xff1a;包含头文件 第二步&#xff1a;创建流对象 第三步&#xff1a;指定方式打开文件 第四步&#xff1a;…

通过路由器监控,优化网络效率

路由器是网络的基本连接组件&#xff0c;路由器监控涉及将路由器网络作为一个整体进行管理&#xff0c;其中持续监控路由器的性能、运行状况、安全性和可用性&#xff0c;以确保更好的操作和最短的停机时间&#xff0c;因此监控路由器至关重要。 为什么路由器监控对组织很重要…

Oracle19c静默部署

Oracle19c静默部署文档 下载地址 https://www.oracle.com/database/technologies/oracle-database-software-downloads.html#db_free 一、系统基础配置 1、创建用户和用户组 # 创建oinstall和dba用户组 groupadd oinstall groupadd dba# 创建Oracle用户 useradd -g oinstall…

C语言中,基本数据类型介绍

C语言当中各种数据类型的大小&#xff0c;首先要了解有哪些数据类型。 一 字符型&#xff1a; 整数&#xff08;字符&#xff09;类型存储大小值范围char1 字节-128 到 127 或 0 到 255&#xff08;2的8次方&#xff09;unsigned char1 字节0 到 255&#xff08;&#xff09;s…

前端框架的发展史介绍框架特点

目录 1.前端框架的发展历程 2.官网、优缺点、使用场景 2.1 jQuery 2.2 AngularJS 2.3 React 2.4 Vue.js 2.5 Angular 1.前端框架的发展历程 jQuery&#xff08;2006年&#xff09;&#xff1a;jQuery是一个非常流行的JavaScript库&#xff0c;用于简化DOM操作和事件处理…

Java面向对象编程(高级)一

在Java中&#xff0c;面向对象编程更是核心设计理念之一&#xff0c;为开发者提供了丰富的工具和特性来创建灵活、可扩展的应用程序。 本博客将深入探讨Java面向对象编程的高级特性&#xff0c;包括但不限于多态、继承、封装、抽象类、接口等方面的内容。我们将从实际案例出发…

C语言从入门到熟悉------第六阶段

头文件 程序是如何编译生成可执行文件的 在编写程序时&#xff0c;可以将所有程序都放在一个.c文件中&#xff0c;然后通过编译器将这个.c文件编译成.obj目标文件。obj就是object的缩写&#xff0c;即“目标”的意思。一个.obj文件就是一个编译单元。一个程序可以由一个编译单…

【数据库】基础操作

系列文章目录 &#x1f308;座右铭&#x1f308;&#xff1a;人的一生这么长、你凭什么用短短的几年去衡量自己的一生&#xff01; &#x1f495;个人主页:清灵白羽 漾情天殇_计算机底层原理,深度解析C,自顶向下看Java-CSDN博客 ❤️相关文章❤️&#xff1a;清灵白羽 漾情天…