列表

详情


NC21791. 逃离幻想乡

描述

“来世愿生幻想乡”,这是多少东方迷的心愿啊。

但是……

“来世想生在幻想乡的各位,小心到时候我的儿子看你们的本子……” 某易云音乐上的网友语惊四座。

没想到,这件事情闹得沸沸扬扬,竟然连远在幻想乡的灵梦也知道了,于是灵梦打算带领一众妖精们逃离幻想乡,前往新的乌托邦。

正当一众妖精再有说有笑的赶路时,在最前头的紫妈突然停了下来,原来是有一个结界拦住了去路,上面写着:

结果妖精刚通过没多久,却发现前面有一个万丈深渊,峭壁上还有几行大字:

妖精们啊,你们只需算出,对于一个整数m(0≤m≤n)有多少个2m在10进制下第一个数字为就可以召唤深渊巨龙(神龙)通过这里。

仗着自己开了一个红茶馆(雾),大小姐在1e-9秒内就算出了答案ans1

成功通过深渊后,妖精们来到了幻想乡之门前,只见门前插了3根擎天巨柱,其中最左边的柱子上有2*ans1个翡翠方块,而翡翠方块刚好从上到下依次增大且每种尺寸的翡翠方块有两块,也就是说:一共有ans1 种翡翠方块,妖精们走进一看,发现同一尺寸的翡翠方块竟然还分颜色:上面的翡翠方块为黑色,下面的翡翠方块为白色。最下面的翡翠方块上刻了一行小字:

妖精们啊,若要出此幻想乡,你们须将所有的翡翠从左边的定海柱移至最右边的定天柱上,并且遵从以下规则:

1.大的翡翠方块不能放在小的翡翠方块上面
2.当所有的翡翠方块移动完毕时,定天柱上的方块黑白顺序必须和定海柱上的方块黑白顺序相同

仗着机敏的头脑,琪露诺在1e-9秒内就算出了最少的移动次数ans2

妖精们齐心协力将所有方块移到右边的柱子上的后,突然幻想乡之门炸裂了,随后整个幻想乡的空间出现龟裂,原来,这个装置便是幻想乡的毁灭装置。

现在灵梦她们自由了,她们可以前往她们自己的乌托邦去了。

临走前,灵梦为了考验一下作为蒟蒻的YPC,所以就让蒟蒻YPC告诉她这一路上的ans1 ans2分别是多少,由于YPC非常蒻,所以就前来询问各位巨佬了,希望你们能求出ans1 ans2的值,注意将ans2对1000000007取模(YPC温馨提醒:模运算在Pascal下为mod,在C++下为*%*)。

输入描述

一行2个数字n,

输出描述

第一行一个数表示ans1,第二行一个数表示ans2

示例1

输入:

10 3

输出:

1
3

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++11(clang++ 3.9) 解法, 执行用时: 20ms, 内存消耗: 468K, 提交时间: 2019-06-02 20:18:21

#include<bits/stdc++.h>
#define MOD 1000000007
typedef long long LL;
 using namespace std;
int n,L;
LL fpower(int a,int b,int p){ LL ans=1; for( ;b;b>>=1) if(b&1) ans =(LL)ans*a%MOD,a=(LL)a*a%MOD; else a=(LL)a*a%MOD;return ans;}
LL ans1=0,ans2=0;
int main()
{
  cin>>n>>L; 
  LL x=1,x1;
  for(int i = 0 ; i <= n ; i ++)
  {
    x1 = x;
	while(x1>=10) x1/=10;
	if(x1==L) ans1++;	
    if(x>=LLONG_MAX/2) x/=10;
  	x*=2; 
  }
  cout<<ans1<<endl<<(fpower(2,ans1+2,MOD)-5+MOD)%MOD;
  return 0;
}

C++14(g++5.4) 解法, 执行用时: 24ms, 内存消耗: 492K, 提交时间: 2020-02-05 21:57:49

#include<stdio.h>
int n,l,i,ans1,ans2;
long long t=1,P=1000000007;
int hd(long long x){for(;x>9;x/=10);return x;}
long long pw(int x,int y){if(y==0)return 1;long long t=pw(x,y>>1);t=t*t%P;return y&1?t*x%P:t;}
int main(){
    scanf("%d%d",&n,&l);
    for(i=0,ans1=l==1;i<n;++i){t*=2;if(t>=1e18)t/=10;if(hd(t)==l)++ans1;}
    ans2=((pw(2,ans1)-1)*4-1+P)%P;
    printf("%d\n%d",ans1,ans2);
}

上一题