您的位置:首页 > 其它

A-筱玛爱地理 ( 快速幂​​​​​​​、逆元、sort cmp函数-​​​​​​​结构体排序)

2019-07-08 11:44 92 查看

A-筱玛爱地理

链接:https://ac.nowcoder.com/acm/contest/946/A
来源:牛客网
 

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 524288K,其他语言1048576K
64bit IO Format: %lld

题目描述

筱玛是一个热爱地理的好筱玛。最近,在《地理II》作业本上,筱玛学到了“贝塔指数”的概念:

在经济地理学中,交通的联结度表示交通网络的发达程度,通常用贝塔指数来计算与比较。若用VV表示一个交通网络中结点的数量,用EE表示边的数量,则贝塔指数的计算方式为:β=EVβ=EV。

 

“实践是检验真理的唯一标准”。作为一个热爱地理的好筱玛,她马上就把新学的知识应用到实践当中去。筱玛一口气出了nn张交通网络规划图,其中第ii张交通网络GiGi有ViVi个结点和EiEi条边。筱玛一眼就看出了哪张图好、哪张图坏。但是作为一个负责任的好筱玛,她必须带领同学们一起进步。因此,她需要你将所有的nn张图按照贝塔指数排序,并求出它们各自的贝塔指数在模109+7109+7意义下的值。

输入描述:

[code] 

第一行一个整数nn,表示交通网络规划图的数量。

接下来nn行,每行两个整数ViVi和EiEi,分别表示图GiGi中的结点数量和边的数量。

输出描述:

[code] 

输出共nn行,每行一个数,表示贝塔指数第ii大的交通网络的贝塔指数在模109+7109+7意义下的值。

如果不能整除,输出分数取模后的结果。

示例1

输入

复制

[code]1
1 3

输出

复制

[code]3

说明

[code]显然此时β=EV=3β=EV=3。

备注:

[code] 

对于100%的数据,保证1≤n≤2×1051≤n≤2×105,1≤Vi,Ei≤1091≤Vi,Ei≤109。

题意:n对数相除 取模,即除法取模,逆元

题解:费马小定理 inv(a) : a^(p-2) = inv(a) (mod p)

知识点:快速幂逆元sort cmp函数

[code]#include<bits/stdc++.h>
using namespace std;

#define mod 1000000007
long long int quick_mi(long long int x,long long int y)
{
long long int res=1;
while(y)
{
if(y&1) res=res*x%mod;//!!!res取模啊!!!
x*=x;
x%=mod;
y>>=1;
}
return res;

}
struct node
{
long long  int v,e;
}aa[200005];
bool cmp(node  x,node  y)
{
if(x.e*y.v>=y.e*x.v) return true;
else return false;
}
int main()
{
long long int m;
scanf("%lld",&m);
for(int i=0;i<m;i++)
{
int e,v;
scanf("%lld%lld",&aa[i].v,&aa[i].e);
}
sort(aa,aa+m,cmp);
for(int i=0;i<m;i++)
{
printf("%lld\n",aa[i].e*quick_mi(aa[i].v,mod-2)%mod);
}
}

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: