zoukankan      html  css  js  c++  java
  • P1635 跳跃

    传送门

    观察到(4x+3=2(2x+1)+1)以及(8x+7=2(2(2x+1)+1)+1)

    所以可以把(xx->2x+12x+1)当成一个基本变化

    (xx->4x+3)是两个基本变化,(xx->8x+7)是三个基本变化

    所以可以模拟一个基本变化

    当基本变化次数大于300000是结束迭代

    因为要使两个变化之和最小,所以尽量多用xx->8x+78x+7

    当基本变化次数%3==0,都用(xx->8x+7),总次数=基本变化次数/3

    当基本变化次数%3==1,用两个(xx->4x+3),剩下用(xx->8x+7),总次数=基本变化次数/3+1

    当基本变化次数%3==2,用一个(xx->4x+3),剩下用(xx->8x+7),总次数=基本变化次数/3+1

    #include <bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    const ll mod=1000000007;
    ll x,ans;
    int main()
    {
    	cin>>x;
    	ll i;
    	for(i=0;i<=300000;i++)
    	{
    		if(x==0)	break;
    		x=(x*2+1)%mod;
    	}
    //其实这里有个小bug,i==300000时已经迭代了300001次
    //如果在这个时候刚好等于0,其实还是不符合条件的
    //不过我,懒得改了(●'?'●) 
    	if(x!=0)	cout<<-1;
    	else if(i%3==0)	cout<<i/3;
    	else if(i%3==1)	cout<<i/3-1+2;
    	else if(i%3==2)	cout<<i/3+1;
    	return 0;
    }
    
  • 相关阅读:
    hdu4549 M斐波那契数列(矩阵快速幂+费马小定理)
    E. 因数串(EOJ Monthly 2020.7 Sponsored by TuSimple)
    2019春总结作业
    大一下半年学期总结
    ball小游戏
    贪吃蛇
    链接远程仓库
    git自动上传脚本及基本代码
    模板 --游戏
    飞机小游戏
  • 原文地址:https://www.cnblogs.com/iss-ue/p/12636168.html
Copyright © 2011-2022 走看看