11.5
来源:互联网 发布:mac用pe安装win7系统 编辑:程序博客网 时间:2024/06/08 16:58
T1:解梦
测:70
费马小定理 a^(p-1)≡1 (mod p)解出
#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>using namespace std;#define ll long long#define INF 1000000007ll a,b;ll mi(ll x,ll y,ll pa){ ll p=x,ans=1;//printf("%lld\n",pa); while(y>0){ if(y&1)ans=(ans*p)%pa; //printf("#%lld %lld\n",ans,p); p=p*p%pa; y=y>>1; } return ans%pa;}int main(){ int i,j; scanf("%lld%lld",&a,&b);printf("%lld\n",mi(a,mi(a,b-1,INF-1),INF)); return 0;}
T2:序列
测:50
对于前缀和为奇数的位置,它减去一个偶数便为奇数,减去一个正好比它小一点的偶数便是此位置结尾的最小正奇数。用set实现,边加入set边处理最小值,于是set中的元素肯定是在当前位置前的元素了。
考试时其实想出大部分,但是因为不知道set的用法,以及不知道处理大小与元素前后的关系,从而只能骗个分。
#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#include<set>using namespace std;#define ll long long#define INF 300000*2000000000ll n,a[300005],s[300005];ll mn;int mni,mnj;struct node{ ll s,id; friend bool operator < (const node n1,const node n2){ return n1.s<n2.s; }}x;set <node> q1,q2;ll read(){ ll x=0,f=1; char ch=getchar(); while(ch<'0'||ch>'9'){ if(ch=='-')f=-1; ch=getchar(); } while(ch>='0'&&ch<='9'){ x=(x<<3)+(x<<1)+ch-'0'; ch=getchar(); } return x*f;}int main(){ int i,j; n=read(); mn=INF; for(i=1;i<=n;++i){ a[i]=read(); } for(i=1;i<=n;++i){ s[i]=s[i-1]+a[i]; } x.s=0;x.id=0;q2.insert(x); for(i=1;i<=n;++i){ if(s[i]&1){ x.s=s[i];x.id=i; q1.insert(x); if(q2.empty())continue; set <node> ::iterator xx=q2.lower_bound(x); set <node> ::iterator yy=q2.begin(); if(xx==yy)continue; --xx; if(((x.s-(*xx).s)<mn)&&(x.s-(*xx).s>0)){ mn=x.s-(*xx).s;mni=(*xx).id+1;mnj=i; } else if((x.s-(*xx).s)==mn&&(*xx).id+1<mni){ mni=(*xx).id+1;mnj=i; } } else{ x.s=s[i];x.id=i; q2.insert(x); if(q1.empty())continue; set <node> ::iterator xx=q1.lower_bound(x); set <node> ::iterator yy=q1.begin(); if(xx==yy)continue; --xx; if(((x.s-(*xx).s)<mn)&&(x.s-(*xx).s>0)){ mn=x.s-(*xx).s;mni=(*xx).id+1;mnj=i; } else if((x.s-(*xx).s)==mn&&(*xx).id+1<mni){ mni=(*xx).id+1;mnj=i; } } } if(mn!=INF)printf("%lld %d %d\n",mn,mni,mnj); else printf("-1\n"); return 0;}
阅读全文
0 0
- 11.5
- 11.5
- 11.5
- 11.5 -- 2012
- 11.5 心得
- 11.5考试
- 11.5笔记
- 11.5.总结
- 11.5List
- 11.5 EDK
- 11.5dairy
- python--11.5
- 11.5模拟
- java-11.5
- 初出張(11.5~11.7)
- 11.5 三层架构
- 11.5 小 结
- PowerBuilder 11.5下载地址
- Atcoder Regular Contest 066 F genocide【JZOJ5451】
- (五)、Java复习笔记之Map集合
- Linux 下的磁盘的格式化和挂载
- 卷积神经网络入门详解
- You Only Look Once: Unified, Real-Time Object Detection
- 11.5
- QString与std::string的相互转换
- java se--2.数组-3.常见算法
- WIN7下创建tensorflow环境[Anaconda3-4.2.0+tensorflow(gpu/cpu)+pycharm]
- magento中常用知识点
- Hadoop学习第一天
- 计算机类中文核心期刊
- OpenCV Contrib Modules
- 写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和,例如,调用DigitSum(1729),则应该返回1+7+2+9,它的和是19