这玩意好像甚至有递推式……不太懂

(为什么是图片?cnblogs 第一个公式没渲染成功)

时间复杂度是 \(O(4^{\deg F}\log K)\) 的。

#include<bits/stdc++.h>
using namespace std;
#define int long long
const int maxn=100;
int f[17][maxn],cur[10],al[4];
int calc(int K){
// cerr<<"___________________________________"<<endl;
// cerr<<"solve "<<K<<endl;
memset(f,0,sizeof(f));
f[1][1]=1;
for(int R=2;R<=62;R++){
if(K&(1ll<<R-2)){
for(int j=0;j<4;j++)al[j]=0;
for(int j=0;j<16;j++)al[0]+=(j&1)*(1<<j);
for(int j=0;j<16;j++)al[1]+=(__builtin_popcount(j)&1)*(1<<j);
for(int j=0;j<16;j++)al[2]+=(((j&1)+((j>>1)&1)+((j>>2)&1))&1)*(1<<j);
for(int j=0;j<16;j++)al[3]+=((((j>>1)&1)+((j>>3)&1))&1)*(1<<j);
for(int j=1;j<16;j++){
int c1=(1<<16)-1,c2=0;
for(int k=0;k<4;k++){
if(j&(1<<k))c1=c1&al[k];
else c2=c2|al[k];
}
int x=c1-(c1&c2);
for(int l=0;l<16;l++)if((1<<l)&x)f[j][R]+=f[l][R-1];
}
for(int j=0;j<4;j++)al[j]=0;
for(int j=0;j<16;j++)al[0]+=(((j&1)+((j>>2)&1))&1)*(1<<j);
for(int j=0;j<16;j++)al[1]+=((((j>>1)&1)+((j>>2)&1)+((j>>3)&1))&1)*(1<<j);
for(int j=0;j<16;j++)al[2]+=(__builtin_popcount(j)&1)*(1<<j);
for(int j=0;j<16;j++)al[3]+=((j>>3)&1)*(1<<j);
for(int j=1;j<16;j++){
int c1=(1<<16)-1,c2=0;
for(int k=0;k<4;k++){
if(j&(1<<k))c1=c1&al[k];
else c2=c2|al[k];
}
int x=c1-(c1&c2);
for(int l=0;l<16;l++)if((1<<l)&x)f[j][R]+=f[l][R-1];
}
}else{
for(int j=0;j<4;j++)al[j]=0;
for(int j=0;j<16;j++)al[0]+=(j&1)*(1<<j);
for(int j=0;j<16;j++)al[2]+=((j>>1)&1)*(1<<j);
for(int j=1;j<16;j++){
int c1=(1<<16)-1,c2=0;
for(int k=0;k<4;k++){
if(j&(1<<k))c1=c1&al[k];
else c2=c2|al[k];
}
int x=c1-(c1&c2);
for(int l=0;l<16;l++)if((1<<l)&x)f[j][R]+=f[l][R-1];
}
for(int j=0;j<4;j++)al[j]=0;
for(int j=0;j<16;j++)al[0]+=((j>>2)&1)*(1<<j);
for(int j=0;j<16;j++)al[2]+=((j>>3)&1)*(1<<j);
for(int j=1;j<16;j++){
int c1=(1<<16)-1,c2=0;
for(int k=0;k<4;k++){
if(j&(1<<k))c1=c1&al[k];
else c2=c2|al[k];
}
int x=c1-(c1&c2);
for(int l=0;l<16;l++)if((1<<l)&x)f[j][R]+=f[l][R-1];
}
}
// for(int j=0;j<16;j++)cerr<<f[j][R]<<" ";cerr<<endl;
}
int ans=0;
for(int i=0;i<16;i++)ans+=f[i][62]*__builtin_popcount(i);
// cerr<<K<<" ans = "<<ans<<endl;
return ans;
}
signed main(){
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
// cout<<calc(100)<<endl;
int K,res=0;cin>>K;
for(int i=1,z=1;i<=K;i++)z=z*10,res+=calc(z);
cout<<res<<endl;
return 0;
}

Project Euler 588 题解的更多相关文章

  1. project euler 169

    project euler 169 题目链接:https://projecteuler.net/problem=169 参考题解:http://tieba.baidu.com/p/2738022069 ...

  2. Python练习题 040:Project Euler 012:有超过500个因子的三角形数

    本题来自 Project Euler 第12题:https://projecteuler.net/problem=12 # Project Euler: Problem 12: Highly divi ...

  3. [project euler] program 4

    上一次接触 project euler 还是2011年的事情,做了前三道题,后来被第四题卡住了,前面几题的代码也没有保留下来. 今天试着暴力破解了一下,代码如下: (我大概是第 172,719 个解出 ...

  4. Python练习题 029:Project Euler 001:3和5的倍数

    开始做 Project Euler 的练习题.网站上总共有565题,真是个大题库啊! # Project Euler, Problem 1: Multiples of 3 and 5 # If we ...

  5. Project Euler 9

    题意:三个正整数a + b + c = 1000,a*a + b*b = c*c.求a*b*c. 解法:可以暴力枚举,但是也有数学方法. 首先,a,b,c中肯定有至少一个为偶数,否则和不可能为以上两个 ...

  6. Project Euler 44: Find the smallest pair of pentagonal numbers whose sum and difference is pentagonal.

    In Problem 42 we dealt with triangular problems, in Problem 44 of Project Euler we deal with pentago ...

  7. 【Project Euler 8】Largest product in a series

    题目要求是: The four adjacent digits in the 1000-digit number that have the greatest product are 9 × 9 × ...

  8. Project Euler 第一题效率分析

    Project Euler: 欧拉计划是一系列挑战数学或者计算机编程问题,解决这些问题需要的不仅仅是数学功底. 启动这一项目的目的在于,为乐于探索的人提供一个钻研其他领域并且学习新知识的平台,将这一平 ...

  9. Python练习题 049:Project Euler 022:姓名分值

    本题来自 Project Euler 第22题:https://projecteuler.net/problem=22 ''' Project Euler: Problem 22: Names sco ...

  10. Python练习题 048:Project Euler 021:10000以内所有亲和数之和

    本题来自 Project Euler 第21题:https://projecteuler.net/problem=21 ''' Project Euler: Problem 21: Amicable ...

随机推荐

  1. Impala源代码分析(2)-SQL解析与执行计划生成

    7 Replies Impala的SQL解析与执行计划生成部分是由impala-frontend(Java)实现的,监听端口是21000.用户通过Beeswax接口BeeswaxService.que ...

  2. Sublime之快捷操作

    列举常用的Sublime操作,涉及操作 1.每行默认需要统一添加逗号 1)全选 ctrl + a 2) 组合键 ctrl + shift + l 即可进行操作 (这里是L哦) 之后也可以使用HOME键 ...

  3. http请求超时, 底层发生了什么?

    业务方反应调用接口超时,但是在服务端监控并没有看到5xx异常, 于是我们模拟一下请求超时时发生了什么? 1.openresty模拟长耗时服务端 延迟5s响应 error_log logs/error. ...

  4. To B企业:2025继续打价格战,只有死路一条

    从双十一数不清的促销.满减还有消费券,到大模型厂商的"你低价,我免费"中可以窥见,最近几年,在产品泛滥.市场红利消失的困境中,"价格战"已从To C卷到To B ...

  5. 关于tomcat在idea上的中文编码问题

    一.问题引入 在国内,无论是新手还是有一定码龄的开发人员,汉字编码问题一直都是绕不开的魔咒,本文主要对tomcat在jetbrain系列产品idea上的乱码问题提供解决经验. 二.详情描述 新手在初学 ...

  6. PM2部署DotNet应用程序

    pm2简介 PM2是一个Node.js的进程管理工具,可以帮助开发者简化Node.js应用的部署和运维.它提供了进程守护.负载均衡.日志管理等功能,可以监控应用程序的运行状态,并在发生意外情况时自动重 ...

  7. 论文解读《The Philosopher’s Stone: Trojaning Plugins of Large Language Models》

    发表时间:2025 期刊会议:Network and Distributed System Security (NDSS) Symposium 论文单位:Shanghai Jiao Tong Univ ...

  8. COSBrowser 文件对比——更实用的文件管理功能

    我们在使用 COSBrowser 来管理腾讯云存储的文件时,目前我们大家所熟知的上传/下载方式,主要有以下三种: 通过点击按钮上传/下载 通过拖拽的形式进行上传/下载 通过 URL 链接进行上传/下载 ...

  9. vue使用less 有报错(loaderContext.getResolve is not a function)

    1.安装less npm install less-loader --save 2.main.js 引入 import less from 'less' Vue.use(less) warning:如 ...

  10. 使用 IntelliJ IDEA 构建 Spring Framework 5.3.21 源码问题解决

    源码版本 1.下载地址:https://github.com/spring-projects/spring-framework/tags 2.选择要构建的源码版本并下载,例如:5.3.21 相关环境 ...