博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
编程题_饥饿的小易
阅读量:3941 次
发布时间:2019-05-24

本文共 994 字,大约阅读时间需要 3 分钟。

题目详述

题目链接:

题目解析

4x + 3 = 2*(2x + 1)

8x + 7 = 3*(2x + 1)

从起点开始每次 x 0 x_0 x0 = 2* x 0 x_0 x0 + 1,统计做了多少次2 x 0 x_0 x0 + 1后模1000000007等于0,再把次数分解成若干个3与2的和,3的个数加上2的个数最小,不超过100000。

程序测试

import java.util.Scanner;public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); int x0 = sc.nextInt(); if((x0<<1)+1 == 1000000007){
// 排除x0=500000003时,一个2*x+1就可以整除1000000007,但无法移动到此处 System.out.println("-1"); return; } int count = 0; while (x0 != 0 && count <= 300000) {
//最多循环100000次,若每次走的都是8*X+7,相当于2*X+1,走300000次 x0 = ((x0 << 1) + 1) % 1000000007; //计算(x*2+1)% 100000000 count++; } int res = (count + 2) / 3; //如果count%3为0结果就是count/3,count%3为1和2就是count/3+1,这两种情况结果都是(count+2)/3 //int res=(count + 2)/3等价于int res = count%3 == 0 ? count/3 : count/3 + 1 System.out.println(res > 100000 ? -1 : res); }}

转载地址:http://aejwi.baihongyu.com/

你可能感兴趣的文章
Linux(三)- Java开发环境搭建
查看>>
Linux(四)- Ubuntu安装Mysql
查看>>
Ubuntu安装开发环境
查看>>
Deepin开发环境安装
查看>>
Spring入门
查看>>
网址大全
查看>>
Git的使用
查看>>
Linux域名IP映射
查看>>
Java的反射机制
查看>>
SpringCloud微服务应用入门
查看>>
SpringCloud之session共享
查看>>
Springboot集成Shiro实现认证
查看>>
Spring、Spring MVC和MyBatis编程式集成示例
查看>>
在Springboot应用使用redis缓存
查看>>
Spring入门
查看>>
Idea提示键和热部署配置以及git使用
查看>>
Deepin+Vscode搭建vue.js项目及Git操作
查看>>
基于Spring Security前后端分离式项目解决方案
查看>>
Vue3.0+Vite2.0项目框架搭建(一)
查看>>
Vue3.0+Vite2.0项目框架搭建(二)- 引入axios
查看>>