LOJ6368:请让本题永远沉睡于此——题解
给一个分数,求对p=1e9+7取模的值。
给高一同学出的毒瘤模拟题,正好试试给loj传题,竟然过审了,虽然个人觉得很水,但是考试情况来看仅有一人得到了21分的好成绩。
可能坑有点多。
1.作为一个不细心的普及组选手如何得到0pts的好成绩
这这这不是水就能过吗?
费马小定理或扩欧求逆元不就可以了吗。
emmm高精度太难写,弃了吧。
反正51pts够了。
2.作为一个不细心的提高组选手只会做D1T1如何得到0pts的好成绩
这这这不是水就能过吗?
费马小定理或扩欧求逆元不就可以了吗。
高精度不就是a*b^(p-2)%p=a*(b%p)^(p-2)吗?
就敲一个高精除低精就行了。
100pts美滋滋。
3.作为一个不太细心的普及组选手如何得到21pts的好成绩
这这这不是水就能过吗?
费马小定理或扩欧求逆元不就可以了吗。
emm把分母为0的情况特盘掉,然后看一下提示。
woc出题人良心大大的坏,需要把负号提出来,不然第二个样例会输出500000003。
这样应该就有51pts了吧。
4.作为一个细心的普及组选手如何得到51pts的好成绩
咦30pts的包也不需要高精啊为什么单独拿出来呢?
哦如果分母是p的倍数的话不就没有逆元就无解了吗?
等等还要特判分子分母都有p这个因子的情况。
哇真的有51pts啊!
5.作为一个细心的提高组选手只会做D1T1如何得到100pts的好成绩
高精度的话有可能分子和分母有多个p因子。
那么我就暴力对上下同时除p直到有余数为止。(因为二者都是0说明可能还没有除尽)
判断分母余数为0且分子不为0就无解。
否则就费马小定理/扩欧计算即可。
100pts轻松到手。
代码有点丑,也懒得改写了。
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
typedef long long ll;
const ll p=1e9+;
ll qpow(ll k,ll n){
if(n==)return ;
if(n==)return k%p;
ll h=qpow(k,n/)%p;
if(n%==)return h%p*h%p;
return h%p*h%p*k%p;
}
char a[],b[];
ll c[],d[];
ll g[],h[];
ll e1=,e2=;
int s1,s2;
bool w=;
inline void init(){
scanf("%s%s",a,b);
if(a[]=='-'){
s1=strlen(a)-;
w=-w;
for(int i=;i<=s1;i++){
c[i]=a[i+]-'';
}
}else{
s1=strlen(a)-;
for(int i=;i<=s1;i++){
c[i]=a[i]-'';
}
}
if(b[]=='-'){
s2=strlen(b)-;
w=-w;
for(int i=;i<=s2;i++){
d[i]=b[i+]-'';
}
}else{
s2=strlen(b)-;
for(int i=;i<=s2;i++){
d[i]=b[i]-'';
}
}
return;
}
int main(){
init();
if(s2==&&d[]==){
printf("No Solution!\n");
return ;
}
if(s1==&&c[]==){
printf("0\n");
return ;
}
while(e1==&&e2==){
int l1=-,l2=-;
for(int i=;i<=s1;i++){
e1*=;
e1+=c[i];
if(e1>=p){
l1++;
g[l1]=e1/p;
e1%=p;
}else if(l1!=-){
l1++;
g[l1]=;
}
}
for(int i=;i<=s2;i++){
e2*=;
e2+=d[i];
if(e2>=p){
l2++;
h[l2]=e2/p;
e2%=p;
}else if(l2!=-){
l2++;
h[l2]=;
}
}
s1=l1;s2=l2;
for(int i=;i<=s1;i++)c[i]=g[i];
for(int i=;i<=s2;i++)d[i]=h[i];
}
if(e2==&&e1!=){
printf("No Solution!\n");
return ;
}
ll ans=e1%p*qpow(e2,p-)%p;
if(!w&&ans)putchar('-');
printf("%lld\n",ans);
return ;
}
+++++++++++++++++++++++++++++++++++++++++++
+本文作者:luyouqi233。 +
+欢迎访问我的博客:http://www.cnblogs.com/luyouqi233/+
+++++++++++++++++++++++++++++++++++++++++++
LOJ6368:请让本题永远沉睡于此——题解的更多相关文章
- 【BZOJ4167】永远的竹笋采摘 分块+树状数组
[BZOJ4167]永远的竹笋采摘 题解:我们考虑有多少点对(a,b)满足a与b的差值是[a,b]中最小的.以为是随机数据,这样的点对数目可能很少,实测是O(n)级别的,那么我们已知了有这么多可能对答 ...
- TensorFlow之DNN(二):全连接神经网络的加速技巧(Xavier初始化、Adam、Batch Norm、学习率衰减与梯度截断)
在上一篇博客<TensorFlow之DNN(一):构建“裸机版”全连接神经网络>中,我整理了一个用TensorFlow实现的简单全连接神经网络模型,没有运用加速技巧(小批量梯度下降不算哦) ...
- 2019年腾讯最新Java工程师面试题
一.单选题(共21题,每题5分) 1在正则表达式当中下面那一个字符集表示非空格字符 A.[:graph:] B.[:digit:] C.[:space:] D.[:alpha:] 参考答案:A 答 ...
- 【BZOJ-3673&3674】可持久化并查集 可持久化线段树 + 并查集
3673: 可持久化并查集 by zky Time Limit: 5 Sec Memory Limit: 128 MBSubmit: 1878 Solved: 846[Submit][Status ...
- ConCurrent in Practice小记 (2)
Java-ConCurrent2.html :first-child{margin-top:0!important}img.plugin{box-shadow:0 1px 3px rgba(0,0,0 ...
- Reset CSS:只选对的,不选"贵"的
玉伯和正淳一起整理的一份 reset.css: /* KISSY CSS Reset 理念:清除和重置是紧密不可分的 特色:1.适应中文 2.基于最新主流浏览器 维护:玉伯(lifesinger@gm ...
- 【BZOJ】3673: 可持久化并查集 by zky & 3674: 可持久化并查集加强版(可持久化线段树)
http://www.lydsy.com/JudgeOnline/problem.php?id=3674 http://www.lydsy.com/JudgeOnline/problem.php?id ...
- 【转】Flask快速入门
迫不及待要开始了吗?本页提供了一个很好的 Flask 介绍,并假定你已经安装好了 Flask.如果没有,请跳转到 安装 章节. 一个最小的应用 一个最小的 Flask 应用看起来会是这样: from ...
- skynet newservice API参考
local skynet = require("skynet") skynet.start(start_func) c服务snlua启动后执行的第一个lua文件里面的主逻辑必定是s ...
随机推荐
- 【算法分析】如何理解快慢指针?判断linked list中是否有环、找到环的起始节点位置。以Leetcode 141. Linked List Cycle, 142. Linked List Cycle II 为例Python实现
引入 快慢指针经常用于链表(linked list)中环(Cycle)相关的问题.LeetCode中对应题目分别是: 141. Linked List Cycle 判断linked list中是否有环 ...
- 【转】jQuery的deferred对象详解
jQuery的开发速度很快,几乎每半年一个大版本,每两个月一个小版本. 每个版本都会引入一些新功能.今天我想介绍的,就是从jQuery 1.5.0版本开始引入的一个新功能----deferred对象. ...
- Python中的namespace package
在Python 3.3之前,一个目录想被当成package被导入,必须包含__init__.py文件:而在Python 3.3及以后的版本中,__init__.py文件可以不需要,直接使用import ...
- StrBlob类——智能指针作为成员
/* 管理string的类 使用vector来管理元素 由于类对象被销毁时相应的元素成员也将销毁 所以需要将vector保存在动态内存中 */ //该程序鲁棒性不强,没有考虑到vector为空的情况 ...
- Check the string
A has a string consisting of some number of lowercase English letters 'a'. He gives it to his friend ...
- python学习摘要(2)--基本数据类型
python申请存储空间是动态的.变量如同指针一样指向存储空间.多个变量会指向同一个存储空间(节省空间).当变量改变时,原来的地址单元并不会马上释放.(引用计数自行回收) c/c++根基性语言,想要什 ...
- Debian常用設置
1. 更新軟件源 sudo cp /etc/apt/sources.list /etc/apt/sources.list_bak #備份 sudo vi /etc/apt/sources.list / ...
- OSG学习:基本几何体绘制示例
绘制并渲染几何体主要有如下3大步骤: 1.创建各种向量数据,如顶点.纹理坐标.颜色和法线等.需要注意的是,添加顶点数据时主要按照逆时针顺序添加, 以确保背面剔除的正确. 2.实例化一个几何体对象(os ...
- HDU 2124 Repair the Wall
http://acm.hdu.edu.cn/showproblem.php?pid=2124 Problem Description Long time ago , Kitty lived in a ...
- 将sublime添加到右键菜单
sublime text 添加到鼠标右键功能: 把以下内容复制并保存到文件,重命名为:sublime_addright.reg,然后双击就可以了. (注意:需要把下面代码中的Sublime的安装目录( ...