牛客练习赛49场01题解分析

牛客练习赛49场—01筱玛爱地理


对于题解的理解,没错,你没听错,是对于题解的理解(小声的说下)

题目链接参考:https://ac.nowcoder.com/acm/contest/946/A

下面直接我注释好的cpp文件原件内容了哈

#include<bits/stdc++.h>
#define int long long//不管32位还是64位的,int都是4个字节,一个字节8位,即32位 
                     //long long 都是8个字节,那么就是64位,这句话的作用就是将原来的int_32 型 改成int_64型,
					 //在一些预编译里面还会出现 #define _int64 long long的语句,c99标准之后,64位的int都用long long 
					 //来表示,这里可以理解为处理标准兼容的问题。 
#define N 500005
 
using namespace std;
 
const int Mod=1e9+7;//科学计数法 
struct node{int x, y;}a[N];//定义结构体的同时,定义大小为N的结构体数组。 
inline bool cmp(node aa,node bb){return aa.y*bb.x>aa.x*bb.y;}//避免精度问题。 
 
inline int ksm(int x,int y){//求模运算,这里是快速求模运算。 
                            //VS 2017虽然把__int64作为了一种内置类型,但是也做了类似的处理,使得__int64与long long没有肉眼可见的差别。
        int ans1=1;
	    while (y){
        if (y&1) //逐位与运算,通过和1相与,保留最后一位 
		  ans1=1ll*ans1*x%Mod;//通过乘以1ll,将等号右边的精度提高到long long ,低精度向高精度转化,避免中间结果溢出范围,右边的ans现在是64位的int
		                     //原来32位的int型 10位数字,long long 19位数字, 1e+9是9位数字, 所以是32位还是64位都不会超出范围。 
          y>>=1;//右移相当除以2,类比十进数,右移一位相当于除以10,同理左移,是乘以相应的进制基数。 
		  x=1ll*x*x%Mod;//x中记录每次翻倍的求模的结果。 
        }
	   return ans1;
}
signed main(){
    int n;
    
	scanf("%lld",&n);
    for (int i=1;i<=n;i++) 
	scanf("%lld%lld",&a[i].x,&a[i].y);//注意结构体的输入方式。 
    sort(a+1,a+n+1,cmp);//i=1开始,所以起始位置为a+1 
    for (int i=1;i<=n;i++) 
	printf("%lld\n",a[i].y*ksm(a[i].x,Mod-2)%Mod);//分数求模的定理转换。 
    return 0;
}

关于模运算这里就不赘述,上我手写的几张图,帮助大家理解这个求模的函数。
在这里插入图片描述
在这里插入图片描述
下面是关于这道题的相关的链接

1. 费马小定理:建议百度,第一个博客,下面是关于位运算,inline函数的使用,我也分不清了,下次做好笔记,哭唧唧。
2. long long 与 64位的区别:
  https://blog.csdn.net/CV_Jason/article/details/85244813?      tdsourcetag=s_pcqq_aiomsg

3. https://blog.csdn.net/CV_Jason/article/details/85244813?tdsourcetag=s_pcqq_aiomsg

​ 4.https://blog.csdn.net/pt666/article/details/7051082

​ 5.https://blog.csdn.net/qq_34364995/article/details/80544465

  6  https://blog.csdn.net/qq_34364995/article/details/80544465

​ 7.https://blog.csdn.net/godleaf/article/details/79844074

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值