Number (Standard IO)

来源:互联网 发布:公司流程优化建议 编辑:程序博客网 时间:2024/05/20 20:44

Description

  给出一个整数 ,你可以对 进行两种操作。
  1、将x变成4x+3
  2、将x变成8x+7

  问,最少通过多少次操作,使得x是1000000007的倍数?


题解:

  听人说什么4x+3的立方等于8x+7的平方,2(2x+1)+1=4x+3,2(4x+3)+1=8x+7~~然后就没有然后了,考试时我一心奔着50%(操作次数<=10)去暴力了,没想到。

代码:

var  a:int64;  b:real;begin  readln(a);  while a mod 1000000007<>0 do    begin      a:=a mod 1000000007;      a:=a*2+1;      b:=b+1;    end;  b:=b/3;  if trunc(b)<>b then writeln(trunc(b)+1)  else writeln(b:0:0);end.

3 0