首页 > 其他分享 >带余除法题解

带余除法题解

时间:2024-10-13 16:48:22浏览次数:1  
标签:10 le 题解 样例 带余 余数 除法 除数

题面

带余除法

题目背景

注意:提交至洛谷时,请使用标准输入输出,而非文件输入输出。

NOTICE: When submitting your code on Luogu site, please use standard IO instead of file IO.

点我(或在本题底部)下载中文试题 PDF。

Click here (or at the bottom of this page) to download the English version of statements (PDF).

注意:本次比赛所有题目的大样例均为 Linux 换行符格式,在 Windows 系统内可能无法正常显示换行。

题目描述

我们已经学过带余除法。对于两个正整数 \(n,q\),如果 \(n\) 除以 \(q\) 的商为 \(k\),余数为 \(r\),我们可以写出带余除法算式 \(n\div q = k \cdots\cdots r\),或被记为 \(n\div q = k (\text{r. } r)\)。本题中,为了简化,哪怕 \(r=0\),我们也要写出这个余数。

现在有一个带余除法,然而你只知道被除数 \(n​\) 和商 \(k​\),而并不知道除数 \(q​\) 和余数 \(r​\)。你想知道余数有多少种可能。

输入格式

本题有多组测试数据。输入的第一行有一个正整数 \(T\),表示数据组数。

之后 \(T\) 行,每行有一个正整数 \(n\) 和自然数 \(k\),分别表示带余除法的被除数和商。

输出格式

对于每组测试数据,输出一行一个自然数,表示余数的不同可能性数量。

样例 #1

样例输入 #1

2
10 2
1 0

样例输出 #1

2
1

样例 #2

样例输入 #2

参见 division/division2.in

样例输出 #2

参见 division/division2.ans

提示

【样例 1 解释】

对于第一组数据,被除数为 \(10\),商为 \(2\)。

  • 如果除数是 \(1,2,3\),那么商分别是 \(k=10,5,3\),不符合题意。
  • 如果除数是 \(4\),那么商为 \(2\),余数为 \(r=2\)。
  • 如果除数是 \(5\),那么商为 \(2\),余数为 \(r=0\)。
  • 如果除数是 \(6,7,8,9,10\),那么商都是 \(1\),不符合题意。
  • 如果除数 \(>10\),那么商为 \(0\),不符合题意。

对于第二组数据,被除数为 \(1\),商为 \(0\)。

只要除数 \(q>1\),那么 \(1\div q = 0 \cdots\cdots 1\) 一定是正确的带余除法算式。余数只有 \(1\) 这一种可能。

【数据范围】

对于前 \(30\%\) 的数据,保证 \(1\le n\le 1000\),\(0\le k\le 1000\)。

另有 \(20\%\) 的数据,保证 \(k\le 10^5\)。

另有 \(20\%\) 的数据,保证 \(k\ge 10^9\)。

对于全体数据,保证 \(1\le T\le 10\),\(1\le n\le 10^{14}\),\(0\le k\le 10^{14}\)。

思路

  • 观察题目列出\(n\div q=k \cdots\cdots r ( r < k )\)

  • 求余数有多少种可能,就是求除数有多少可能

  • 则q最小为\(n \div (k+1)+1\)

  • q最大为\(n \div k\)

  • 最终结果为q的最大值-q的最小值+1

代码

点击查看AC代码
#include<bits/stdc++.h>
using namespace std;
int main(){
	int t;
	cin>>t;
	while(t--){
		long long n,k;
		cin>>n>>k;
		if(k==0) cout<<1<<endl;
		else{
			long long l=n/(k+1)+1;
			cout<<n/k-l+1<<endl;
		}
	}
	return 0;
}

标签:10,le,题解,样例,带余,余数,除法,除数
From: https://www.cnblogs.com/zjr20120321/p/18462557

相关文章

  • Tarjan缩点题单 刷题题解
    Tarjan缩点可以将一个图的每个强连通分量缩成一个点,然后构建新图,该图就会变成一个有向无环图。变成有向无环图之后就能结合最短路,拓扑......解决相应题目洛谷题单分享:https://www.luogu.com.cn/training/526565前几道是绿题,没什么好写的,大致过一下1.强连通分量题目链接:https:......
  • 【算法题解记录】_1
    目录【算法题解记录】_1leetcode_115题【算法题解记录】_1还是干这个事了,要吃饭嘛,决定把在解题或者解完题进一步优化的时候,发现的有意思的地方记录一下leetcode_115题动态规划解的字符串匹配,矩阵全部都遍历,用时比较长,发现排在网友们的末尾纸上画了一下矩阵,行数代表被匹配串s......
  • 系统开发基础错题解析二【软考】
    目录前言1.人机界面设计2.架构设计2.1管道过滤器体系2.2仓库风格3.软件测试相关概念4.白盒测试用例4.14.25.测试分类与阶段任务划分6.软件维护类型7.软件质量保证8.软件过程改进前言本文专门用来记录本人在做软考中有关系统开发基础的错题,我始终认为教学相长是最快......
  • 数学题解报告
    TeamWork题意:求\(\sum_{i=1}^n\dbinom{n}{i}i^k\)\(n<=1e9,k<=5e3\)推式子\[\begin{aligned}记f_{n,k}&=\sum_{i=1}^n\dbinom{n}{i}i^k\\&=\sum_{i=1}^n\left[\dbinom{n-1}{i-1}+\dbinom{n-1}{i}\right]i^k\\&=\sum_{i=1}^n\d......
  • 神奇的幻方 NOIP 2015 题解
    描述幻方是一种很神奇的 N×N 矩阵:它由数字 1,2,3,⋯⋯,N×N 构成,且每行、每列及两条对角线上的数字之和都相同。当 N 为奇数时,我们可以通过下方法构建一个幻方:首先将 1 写在第一行的中间。之后,按如下方式从小到大依次填写每个数 K(K=2,3,⋯,N×N) :若 (K−1)......
  • Android12.0 需求开发篇+问题解决篇之IPC socket通信
    1.需求描述        应用组C程序客户端和Android系统层Java服务端进行通信需求,这里其实在Android系统下IPC的方式有很多,像Binder作为Android特有的跨进程通信,但是应用组的同事之前是非Android系统下进行应用开发,使用的都是socket这种通用IPC通信。这里为兼容应用组代码......
  • 题解:牛客小白月赛102(A - C)
    A序列中的排列题意:每次给你两个正整数\(n,k\),并给你一段长度为\(n\)的序列。(所有输入均为小于等于100的正整数)问:原序列中是否存在子序列,使得这个子序列是\(k\)的排列子序列:某个序列的子序列是从最初序列通过去除某些元素但不破坏余下元素的相对位置(在前或在后)而形成的......
  • BUUCTF_MISC题解析(7)
    7.wireshark下载文件发现里面是一个pcap格式的文件。而pcap格式就是网络分析工具保存的网络数据包,是捕获的从网卡发送或者接收的每一个数据包的离线网络流量。 在wireshark官网上下载wireshark,wireshark是网络封包分析工具。将文件用wireshark打开,发现有三个部分,上半部分绿......
  • P9020 [USACO23JAN] Mana Collection P 题解
    P9020[USACO23JAN]ManaCollectionP题解首先考虑对于长为\(d\les\)的最优路径,最优的方法一定是先在起点等\(s-d\)秒再走以确保收集到的最大。\(n\le18\)我们显然考虑状压dp。考虑最大法力值难以计算,正难则反,考虑使未被选择的最小。于是我们设\(dp_{sta,i}\)表示状......
  • Project Euler 728 题解
    Problem728CircleofCoins得到Wallbreaker5th的指导。\(F\)就是求这些环上区间(记为\(A\))的异或线性基大小。令\(A'_i\getsA_i\oplusA_{i+1}\)。现在求\(\langA'\rang\)的线性基。如果可能从全黑和全白间转换,那么\(\dim\langA'\rang=\langA\rang-1\),否则不\(-1......