(林大oj1276)
林大oj1276 感谢冯学长的指点
题目地址:https://acm.nefu.edu.cn/JudgeOnline/problemShow.php?problem_id=1276
本题思路是:先积分成等比数列,利用等比数列性质求和,再求导还原。
用到了 —— 费马小定理、快速幂、快速乘(防止直接乘爆longlong,用加代替乘,边加边取模)、大数字符读入处理、还有逆元。
经过积分 求和 再求导 得到为
(n-1)[(b+1)nb-(a+1)na]-(nb+1-na+1)
———————————————%mod
(n-1)2
注意:(b+1) (a+1)需要对mod取模
而根据费马小定理nb na na+1 nb+1 中的a b需要对mod-1取模(巨坑 wrong了好几次)
#include <iostream>
#include <stdio.h>
#include <algorithm>
#include <math.h>
#include <stdlib.h>
#include <string.h>
#define mod 10000000033
using namespace std;///
long long cheng(long long m,long long n)///暂且命名为快速乘模板(可以防止直接乘爆longlong)
{//对mod取模 m=m%mod;n=n%mod;long long b=0;while(n>0){if(n&1)b=(b+m)%mod;n=n>>1;m=(m+m)%mod;}//printf("%lld\n",mod);return b;
}
long long cheng1(long long m,long long n)///暂且命名为快速乘模板(可以防止直接乘爆longlong)
{///对mod-1取模 —费马小定理 n^b^ n^a^ n^a+1^ n^b+1^ 中的a b需要对mod-1取模m=m%(mod-1);n=n%(mod-1);long long b=0;while(n>0){if(n&1)b=(b+m)%(mod-1);n=n>>1;m=(m+m)%(mod-1);}//printf("%lld\n",mod);return b;
}
long long quick(long long m,long long n)///快速幂
{long long b=1;while(n>0){if(n&1)b=cheng(b,m)%mod;n=n>>1;m=(cheng(m,m))%mod;}//printf("%lld\n",mod);return b%mod;
}
char ax[25],bx[25];
int main()
{long long t,n,a1,a2,ans,x1,x2,x3,x4,x5;long long aa,aaa,bb,bbb,x,l1,l2,i;scanf("%lld",&t);while(t--){scanf("%s%s%lld",ax,bx,&n);// printf("%s\n%s\n",ax,bx);l1=strlen(ax);l2=strlen(bx);aa=aaa=bbb=bb=0;for(i=0;i<l1;i++){x=ax[i]-'0';aa=(aa*10+x)%(mod-1);//n^b^ n^a^ n^a+1^ n^b+1^ 中的a b需要对mod-1取模aaa=(aaa*10+x)%mod;///(b+1) (a+1)需要对mod取模}for(i=0;i<l2;i++){x=bx[i]-'0';bb=(bb*10+x)%(mod-1);//n^b^ n^a^ n^a+1^ n^b+1^ 中的a b需要对mod-1取模bbb=(bbb*10+x)%mod;///(b+1) (a+1)需要对mod取模}n=n%mod;//printf("%lld %lld\n",a,b);if(n==1){x=quick(2,mod-2);///除于2 对2取逆元ans=cheng(aaa+1+bbb,bbb-aaa);ans=cheng(ans,x);printf("%lld\n",ans%mod);continue;}else{if(n==0){printf("0\n");continue;}else{a1=quick(n,aa)%mod;a2=quick(n,bb)%mod;//Ex_gcd(n-1,mod,x,y);x1=cheng(bbb+1,a2);x1=cheng(x1,n-1);x2=cheng(aaa+1,a1);x2=cheng(x2,n-1);x3=cheng(a2,n);x4=cheng(a1,n);x5=cheng(n-1,n-1);x5=quick(x5,mod-2);ans=(x1-x2+mod-x3+x4+mod)%mod;ans=cheng(ans,x5);printf("%lld\n",ans%mod);}}}return 0;
}
有问题可以评论区问我
(林大oj1276)相关推荐
- 北京林大计算机科技应为abc哪类,北京林业大学新生入学要准备什么?
满意答案 楼上回答得已经很好了,我也是广西的,是你们的师兄,我来补充一下: 新生入学都有学长学姐带着办理各项手续,基本都不用你操心(等到你大二了,也要帮助新同学哦!) 在规定时间来北京,在火车站是有校 ...
- 安工大2020计算机调剂,2020考研最新调剂信息,安大、安工大、东北林大211等高校调剂信息...
原标题:2020考研最新调剂信息,安大.安工大.东北林大211等高校调剂信息 最新调剂信息更新. 小编将所有调剂信息都汇总到公众号里面了,方便大家查询信息. 查询方法:点击公众号进入选择调剂信息即可. ...
- 2018年又传喜报!热烈祝贺王家林大师大数据经典著作《Spark SQL大数据实例开发教程》 畅销书籍 出版上市!
2018年又传喜报!热烈祝贺王家林大师大数据经典著作<Spark SQL大数据实例开发教程> 畅销书籍 出版上市! 作者: 王家林 段智华 条码书号:9787111591979 出版日期 ...
- 2020年2月12日 林大OJ习题 队列
2020年2月12日 队列 林大OJ 1632 周末舞会-队列 队列的基本题目,重在理解队列的原理. #include <bits/stdc++.h>using namespace std ...
- 东北林大计算机考研难吗,一位考取东北林大信息学院农业信息化学姐的考研经验分享...
[写在前面]考研一路走来,说实话很累,不累的话说明我没有认真努力过.有人说,考取东北林业大学研究生很好考,不怎么复习就可以考上,很简单的事.经历了东北林业大学2012年考研的人都知道:东北林业大学已经 ...
- 林大计算机学子第一篇博客
林大计算机学子第一篇博客 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页.如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下 ...
- 林大ACM培训心得day4
林大ACM培训心得day4 学会用笔计算解题 一.最大公约数(gcd) 求最大公约数有三种办法 1.暴力枚举法,代码如下: int a,b;int gcd=0; cin>>a>> ...
- 林大ACM培训day3心得
林大ACM培训day3心得 没啥心得放道例题吧 丑数 #include <bits/stdc++.h> #define min4(a,b,c,d) min(min(a,b),min(c,d ...
- 林大ACM培训day2心得
林大ACM培训day2心得 排序 1.sort函数: 2.排序规则: 3.遇到数多但是小的情况,可考虑采用桶排序来排序计算.如问题1650没必要的排序2: 排序 1.sort函数: 函数有三个参数-- ...
最新文章
- idea 执行java maven,IDEA的run maven方式启动步骤详解
- PC处理器装机中的认识 三
- tomcat(10)安全性
- [react-router] React-Router的<Link>标签和<a>标签有什么区别
- 45请求转发和请求重定向区别
- 1.3亿豪宅被拆 抱头痛哭的房主,真实身份竟是保健品大佬,曾涉嫌传销...
- 校招刷题---java选择题笔记01
- 【Java】字符串String操作
- python与c 交互原理_PYTHON 与C相互交互调用实例解析
- qtreeview 点击二级节点弹出dialog_2019二级造价师开卷考?一顿操作猛如虎,一看分数59...
- 变频器按启动没反应_ABB变频器启动无反应维修那些事
- 西游记中孙悟空被唐僧赶走的三回
- weui UI库适用范围
- xcode证书及打包
- matlab simulink 单相可调交流电源设计
- Java中使用HSSFWorkbook POI导出下载excel文件
- 砸金蛋java代码_java实现砸金蛋抽奖功能
- 城镇建设适宜性评价之灾害评价算法
- 模拟模拟交易系统(二)——系统设计
- CSS第三章:13.布局:如何进行网页的经典布局,使用何种标签?让块元素从左到右自然排列如何设置?