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

P11184 带余除法解题报告

时间:2024-12-28 09:00:10浏览次数:10  
标签:10 带余 商为 long P11184 余数 除法 ll 除数

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

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

输入 #1

2
10 2
1 0 

输出#1

2

1

【样例 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÷q=0⋯⋯1 一定是正确的带余除法算式。余数只有 1 这一种可能

不开long long见祖宗。

这个题如果商为0,答案肯定为1。

所以需要特判

if(b==0){
	cout<<1<<endl;
	continue;
}

 第一遍代码:

#include<bits/stdc++.h>
#define ll long long
using namespace std;
int main(){
    ll t;
	cin>>t;
	for(ll o=0;o<t;o++){
		ll a,b,ans=0;
		cin>>a>>b;
        if(b==0){
        	cout<<1<<endl;
        	continue;
        }
 		for(int i=1;i<=a;i++)if(a/i==b)ans++;
 		cout<<ans<<"\n";
	}
	return 0;
}

30分,qaq。

向神犇请教过后得到了一个不用写循环的公式:

a/b-a/(b+1)

于是在改进

#include<bits/stdc++.h>
#define ll long long
using namespace std;
int main(){
    ll t;
	cin>>t;
	for(ll o=0;o<t;o++){
		ll a,b,ans=0;
		cin>>a>>b;
        if(b==0){
        	cout<<1<<endl;
        	continue;
        }
 		cout<<a/b-a/(b+1)<<"\n";
	}
	return 0;
}

总结:不懂就问神犇。 

标签:10,带余,商为,long,P11184,余数,除法,ll,除数
From: https://blog.csdn.net/WEIHAISUNYINGJIE/article/details/144781564

相关文章

  • C++_辗转相除法—遍历和执行
    辗转相除法欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数。其计算原理依赖于下面的定理:定理:divi(a,b)=divi(a,a%b)###计算机--迭代的思想--递归//辗转相除法intdivi_1(inta,intb){ intdivi=0; while(a%b) { divi=a%b;......
  • 【汇编语言】内中断(一) —— 除法错误?看内中断如何轻松化解危机
    文章目录前言1.中断1.1中断信息1.2中断的分类1.3中断的优先权2.内中断的产生2.1导致内中断的原因2.2如何识别不同中断信息来源3.中断处理程序4.中断向量表4.1什么是中断向量表?4.2中断向量表的位置4.3表项所占空间5.中断过程5.1什么是中断过程?5.2具体......
  • PTA 约分最简分式(辗转相除法)
    作者 翁恺单位 浙江大学分数可以表示为分子/分母的形式。编写一个程序,要求用户输入一个分数,然后将其约分为最简分式。最简分式是指分子和分母不具有可以约分的成分了。如6/12可以被约分为1/2。当分子大于分母时,不需要表达为整数又分数的形式,即11/8还是11/8;而当分子分母相等......
  • [待更新]欧几里得算法(辗转相除法)与拓展欧几里得算法
    更新日志2024/12/08:开工。欧几里得算法用途与原理欧几里得算法,用于求两个数的最大公约数。其核心原理为:\(\gcd(a,b)=\gcd(b,a\bmodb)\)证明首先,我们证明\(\gcd(a,b)=\gcd(b,a\bmodb)\)。为了方便证明,这里我们令\(a>b\)。\[\because\gcd(a,b)\mida\text,\gcd......
  • 模二除法详解
    模二除法(Modulo-2Division)是一种特殊的除法运算,用于计算二进制数据的CRC校验码。这种运算与普通的除法类似,但区别在于它使用不进位的异或运算来代替普通除法中的减法操作。模二除法的结果为二进制余数,应用在校验过程中以检验数据完整性。模二除法的基本规则模二除法的每一......
  • 技术深度剖析:ZK 除法中 “Divide and Conquer” 潜藏的漏洞
    在探讨这个主题之前,我们先来了解一下什么是ZK除法以及“DivideandConquer”(分治算法)的基本概念。ZK除法通常是指在零知识证明(Zero-KnowledgeProof,ZK)环境下进行的除法运算。零知识证明是一种密码学技术,允许一方(证明者)向另一方(验证者)证明某个陈述是真实的,而不透露除了该......
  • Divide and Conquer:ZK除法中隐藏的漏洞
    ZK的崛起与演变曾几何时,零知识证明(以下简称ZK)仍然被认为是密码学教科书中的理论概念,至少在传统安全研究中很少被主流社群深入探索。然而在Web3.0领域,区块链技术的迅速发展,用短短几年时间实现了ZK从理论到实践的跨越式进展,一路蓬勃,高歌猛进。1985年诞生,2014年ZCash才用SNAR......
  • 信息学奥赛初赛天天练-74-NOIP2016普及组-基础题5-树、父节点、根节点、叶子节点、非
    NOIP2016普及组基础题521从一个4×4的棋盘(不可旋转)中选取不在同一行也不在同一列上的两个方格,共有()种方法。22约定二叉树的根节点高度为1。一棵结点数为2016的二叉树最少有()个叶子结点;一棵结点数为2016的二叉树最小的高度值是()2相......
  • 如何使用排除法解决模板上的问题
    1.使用Firebug进行排查1.1简要介绍与安装方法Firebug是Firefox的一款插件,提供了一整套web开发所必需的工具。从HTML的编写,到CSS样式表的美化调优,以及…所以我们首先要安装Firefox浏览器。安装好浏览器后,选择菜单栏上的“工具”菜单,点击“附加组件”==>“获取附加组件”在输......
  • Rounding necessary错误解决Java的BigDecimal除法的
    出现Roundingnecessary错误原因是使用了BigDecimal的setScale方法导致。错误原因:setScale方法保留小数位数小于实际位数并且未指定roundingMode参数即报错。如下代码:BigDecimalrs=newBigDecimal("2057.9200");rs.setScale(2);上述代码实际数值是2057.9200是4位小......