Jzoj5317 Func
f(1)=1 f(2x)=f(x) f(2x+1)=f(x)+f(x+1) 给出n<=10^6,求:所有的i满足f(i)=n
第一道类欧算法
我们考虑一个性质 f(2x+1)=f(x)+f(x+1)=f(2x)+f(2x+2)
所以,显然有f(2x+1)>f(2x) f(2x+1)>f(2x+2)
那么现在我们知道了f(2x+1),自然考虑枚举一个f(2x)
可以按照以下形式转移:f(2x+1),f(2x)->f(x+1),f(x) (f(x+1)=f(2x+1)-f(2x))
发现转以后的两者也是相邻的,但是不知道奇偶性,较大的那个肯定是基数
那么就可以进行辗转相减,边界就是f(x+1)=f(x)=1
注意这里可以借鉴辗转相除的方法,不然会Tle
#pragma GCC optimize("O3")
#pragma G++ optimize("O3")
#include<vector>
#include<stdio.h>
#include<string.h>
#include<algorithm>
#define LL long long
#define M 998244353
using namespace std;
vector<LL> A; int p[1000010];
LL gcd(LL x,LL y,LL& a,LL& b){if(x==y) return x>1?0:b=((a&=0)+=1)++;if(x>y){if(!gcd(--x%y+1,y,a,b)) return 0;b=b*p[x/y]%M; a=(b+1)%M; return 1;} else {if(!gcd(x,--y%x+1,a,b)) return 0;a=a*p[y/x]%M; b=(a-1+M)%M; return 1;}
}
int main(){freopen("func.in","r",stdin); freopen("func.out","w",stdout);LL n; scanf("%lld",&n); p[0]=1;for(int i=1;i<=n;++i) p[i]=(p[i-1]<<1)%M;for(LL x,y,i=1;i<=n;++i){if(gcd(n,i,x,y)) A.push_back(x);if(x<0) printf("%d %d\n",x,i);}sort(A.begin(),A.end());for(LL i=0;i<A.size();++i) printf("%lld\n",A[i]);
}
转载于:https://www.cnblogs.com/Extended-Ash/p/9477142.html
Jzoj5317 Func相关推荐
- 使用.NET中的Action及Func泛型委托
原文 http://www.cnblogs.com/skm-blog/archive/2013/05/24/3096294.html 委托,在C#编程中占有极其重要的地位,委托可以将函数封装到委托对象 ...
- 从 Comparison/Converter 到Func 的进化
本篇文章给大家介绍两个在.net2.0 中就已经出现的, 很"老"的委托方式. 通常情况下, 我们在Array 和 List<T> 类中使用这些功能. 明白用法和作用可 ...
- C#之Action和Func的用法(转自 https://www.cnblogs.com/LipeiNet/p/4694225.html)
以前我都是通过定义一个delegate来写委托的,但是最近看一些外国人写的源码都是用action和func方式来写,当时感觉对这很陌生所以看起源码也觉得陌生,所以我就花费时间来学习下这两种方式,然后发 ...
- [C#基础]Func和Action学习
目录 委托 Action Func 总结 委托 委托的那些事 关于委托的基本定义,在很久之前的这篇文章中,有个简单的介绍.稍微回顾一下. 委托是c#中类型安全的,可以订阅一个或多个具有相同签名方法的函 ...
- 浅谈C#中常见的委托Func,Action,Predicate(转)
一提到委托,浮现在我们脑海中的大概是听的最多的就是类似C++的函数指针吧,呵呵,至少我的第一个反应是这样的. 关于委托的定义和使用,已经有诸多的人讲解过,并且讲解细致入微,尤其是张子阳的那一篇.我就不 ...
- 解决 EF whereT(func) 查询的一个性能问题
前两年帮朋友 做了个网吧管理软件,采用动软的三层架构 sql语句生成的.最近因功能变更 要改动,而我这段正在做asp.net mvc +ef+autofac的一个电商网站.索性 就把原来的底层全重新了 ...
- Delegate,Action,Func,匿名方法,匿名委托,事件
一.委托Delegate 一般的方法(Method)中,我们的参数总是string,int,DateTime...这些基本的数据类型(或者没有参数),比如 [c-sharp] view plainco ...
- C#之Action和Func的用法
以前我都是通过定义一个delegate来写委托的,但是最近看一些外国人写的源码都是用action和func方式来写,当时感觉对这很陌生所以看起源码也觉得陌生,所以我就花费时间来学习下这两种方式,然后发 ...
- 七天学习计划_c#_[2][3][4][5]委托、事件、委托与事件的区别、泛型委托、Func\Action\predicate
由于委托之前的博客已经详细写了,这里就简单的过一遍,复习一下: 了解委托 基于委托开发事件驱动程序变得非常简单. 使用委托可以大大简化多线程编程难度. 理解委托 委托也可以看做成一种数据类型,可以定义 ...
最新文章
- windows 域的一些概念
- 【学术技巧】让你的 GitHub 秒变高大上!
- Selenium3+MySQL数据库进行数据驱动测试
- 安装Nginx时报错 the HTTP cache module requires md5 functions
- 群同态基本定理证明_有限群的线性表示 | 表示与群代数
- 那些一心想要离开 BAT 的人,后来怎么样了?
- apache的源码包编译
- moss2007-搜索服務
- 【汇编语言与计算机系统结构笔记01】x86/MIPS/ARM指令集概述与特性,一篇HPCA引发的思考(商业生态的决定性作用)
- jQuery从后面开始截取
- 鼎力加密狗驱动程序_怎么安装加密狗驱动程序
- TensorFlow Seq2Seq模型样例:实现语言翻译
- html超链接为变量,如何向超链接添加变量值
- html 语言 背景颜色,如何在HTML中设置背景颜色?
- 第二章 BIRT设计器概述及本地化支持
- VASP计算笔记_弹性常数计算
- 中国计算机协会(CCF)
- 配置数据源(DataSource)
- 100天精通Python丨办公效率篇 —— 12、Python自动化操作 office-word(word转pdf、转docx、段落、表格、标题、页面、格式)
- Compiling Cpp
热门文章
- php获取页面的可视内容高度,网页制作技巧:获取页面可视区域的高度_css
- 面试题-- 什么是偏向锁
- T.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.Reflectio
- lamba List 转 Map
- java jdk 类加载机制_JDK源码阅读之类加载
- SQL语言基础:SQL中的数据完整性约束用法
- C#easyui combotree 设置节点折叠
- haproxy服务启动命令_安装haproxy和haproxy命令
- IllegalArgumentException:argument type mismatch
- 2021 年最值得了解的 Node.js 工具