3150 Pibonacci数 - Wikioi


题目描述 Description

      你可能听说过的Fibonacci数和圆周率Pi。

      如果你让这两个概念合并,一个新的深奥的概念应运而生:Pibonacci数。

      这些数可以被定义为对于x>=0:

        如果0<=x<4,则P(x) = 1

        如果4<=x,则P(x) = P(x - 1) + P(x - pi)

      其中Pi = 3.1415926535897...在这个问题中,你被要求计算对于一个给定的非负整数x对应P(x)的值。

输入描述 Input Description

      一个非负整数x。

输出描述 Output Description

      一个正整数P(x)。

样例输入 Sample Input

    11

样例输出 Sample Output

    20

数据范围及提示 Data Size & Hint

    数据范围 x<=30000

     

    来源 ICPC 2001 F

 

好题啊

转化题意,给你一个数,你可以一次减去1,或者减去pi,求你有多少种方法把它减到<4(如果它本来就小于4,方案就是1种)

想法1

枚举1的个数算出pi的个数,这是pi结尾的,算组合数

枚举pi的个数算出1的个数这是1结尾的,算组合数

然后加起来

眼瞎,以为只有3000,高兴地交上去,RE了,我靠竟然有30000,怎么办呢

问了问VFleaking,他想了想,帮我找出了一个有巨大优化空间的地方

我求组合数是暴力求的,其实枚举的时候组合数的n,m都是比较接近的,所以记一个lastn和一个lastm每次只要乘几个除几个就行了

然后优化到了10000左右可以过,又卡住了

FVleaking找到了差不多的题http://acm.hit.edu.cn/hoj/problem/view?id=1385

范围是3000,多组数据,我就交了,AC了,于是我的信心倍增,但是还是不知道怎么过30000

然后下了一个C++AC代码(当时也只有C和C++的)

看了以后果然是常数比我好

直接枚举pi的个数为n

然后给剩下的空间加上一个pi,算出这个空间可以容下多少个1,个数为m

可以想象,加上一个pi,pi的个数还是原来枚举的那么多(因为这个空间加上这些pi和1肯定还没满)

所以讨论1摆放情况,因为有可能1结尾,但是超出范围,根本不需要这个1,但是没关系这个方案只计算了一次也只会计算这一次,所以方案数就是C(n+m,n)

然后加上前面那个优化,就可以AC了..........

 

  1 const
  2     h=100000000000000;
  3 type
  4     aa=array[0..10000]of int64;
  5 var
  6     a,b:aa;
  7     n:longint;
  8 
  9 procedure cheng(x:longint);
 10 var
 11     i:longint;
 12 begin
 13     for i:=1 to b[0] do
 14       b[i]:=b[i]*x;
 15     for i:=1 to b[0] do
 16       begin
 17         inc(b[i+1],b[i]div h);
 18         b[i]:=b[i]mod h;
 19       end;
 20     i:=b[0]+1;
 21     while b[i]>0 do
 22       begin
 23         inc(b[0]);
 24         b[i+1]:=b[i]div h;
 25         b[i]:=b[i]mod h;
 26         inc(i);
 27       end;
 28 end;
 29 
 30 procedure jia;
 31 var
 32     i:longint;
 33 begin
 34     for i:=1 to b[0] do
 35       inc(a[i],b[i]);
 36     if b[0]>a[0] then a[0]:=b[0];
 37     for i:=1 to a[0] do
 38       begin
 39         inc(a[i+1],a[i]div h);
 40         a[i]:=a[i]mod h;
 41       end;
 42     i:=a[0]+1;
 43     while a[i]>0 do
 44       begin
 45         inc(a[0]);
 46         inc(a[i+1],a[i]div h);
 47         a[i]:=a[i]mod h;
 48         inc(i);
 49       end;
 50 end;
 51 
 52 procedure chu(x:longint);
 53 var
 54     i:longint;
 55 begin
 56     for i:=b[0] downto 2 do
 57       begin
 58         inc(b[i-1],(b[i]mod x)*h);
 59         b[i]:=b[i]div x;
 60       end;
 61     b[1]:=b[1]div x;
 62     while (b[b[0]]=0)and(b[0]>1) do
 63       dec(b[0]);
 64 end;
 65 
 66 procedure print;
 67 var
 68     i:longint;
 69     k:int64;
 70 begin
 71     write(a[a[0]]);
 72     for i:=a[0]-1 downto 1 do
 73       begin
 74         k:=h div 10;
 75         while k>1 do
 76           begin
 77             if a[i]<k then write(0);
 78             k:=k div 10;
 79           end;
 80         write(a[i]);
 81       end;
 82 end;
 83 
 84 procedure main;
 85 var
 86     i,j,k,last:longint;
 87 begin
 88     read(n);
 89     if n<4 then
 90     begin
 91       write(1);
 92       halt;
 93     end;
 94     dec(n,4);
 95     a[0]:=1;
 96     a[1]:=1;
 97     i:=0;
 98     b[0]:=1;
 99     b[1]:=1;
100     i:=1;
101     j:=trunc(n+pi);
102     while i<=trunc((n+pi)/pi) do
103       begin
104         last:=j;
105         j:=trunc(n+pi-i*pi);
106         for k:=last-1 downto j+1 do
107           begin
108             cheng(k+1);
109             chu(i+k);
110           end;
111         cheng(j+1);
112         chu(i);
113         inc(i);
114         jia;
115       end;
116     print;
117 end;
118 
119 begin
120     main;
121 end.
View Code

 

转载于:https://www.cnblogs.com/Randolph87/p/3599458.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/294072.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Oracle Enterprises Manager 12C安装

前言 随着时代的进步与发展&#xff0c;Oracle官方于2012年12月1日起正式公布不再为Oracle10g版本提供免费的技术支持服务&#xff0c;而另一款新产品12C也即将面试&#xff0c;C即cloud&#xff0c;伴随着云计算的脚步&#xff0c;他终于粉墨登场了&#xff0c;熊熊第一时间下…

一个简单的MVC模式练习

控制层Action接受从模型层DAO传来的数据&#xff0c;显现在视图层上。 package Action;import java.sql.Connection; import java.sql.SQLException; import java.sql.Statement;import DAO.StuDAO; import Model.Student; import Util.DBUtil;public class StuAction {public …

GraphQL 到底有什么魔力?

GraphQL 起源时间退回到 2012年的一个下午, 美国加利福尼亚州, facebook 的工程师们发现他们才上架没多久的移动端应用就收到了很多差评, 用户反映app响应慢&#xff0c;耗电严重等&#xff0c;经过分析后发现, 应用在第一次启动时, 会请求大量的后端api接口, 这其中包括用户自…

android root工具twrp,安卓手机没有twrp的情况,如何下刷入magisk并获得root权限.

安装adb工具从以上地址下载,然后解压到任意目录(例如C:\adb).将此目录添加到windows环境变量path中.在cmd中输入adb, fastboot等命令,如果"显示"xxx"不是内部或外部命令命令",那么说明你弄错了,去了解一下什么是环境变量吧.如果显示一堆英文,那么说明安装完…

VBA即用型代码手册之打开有密码保护的工作薄

我给VBA下的定义&#xff1a;VBA是个人小型自动化处理的有效工具。可以大大提高自己的劳动效率&#xff0c;而且可以提高数据的准确性。我这里专注VBA,将我多年的经验汇集在VBA系列九套教程中。 作为我的学员要利用我的积木编程思想&#xff0c;积木编程最重要的是积木如何搭建…

⑥又是星期五,小试牛刀(编写定制标签)

前言 今天有点迷茫。是身体累了&#xff0c;还是心累了。有种觉得想大哭而无力的感觉&#xff08;可能心还没成熟,或是昨天羽毛球打累了&#xff09;。加油&#xff0c;Jeff Li. 活在当下&#xff0c;坚持打好基础&#xff0c;坚持刷ACM&#xff0c;坚持coding。 今天下午的小故…

技术分享|前端性能 关键性能指标以及测量工具介绍

源宝导读&#xff1a;对于一款商业软件产品而言&#xff0c;其性能表现往往会直接关系到它的生死存亡&#xff0c;这种说法一点也不夸张&#xff0c;数据显示&#xff0c;40&#xff05;的人放弃了加载时间超过3秒的网站。但是一个网页的加载时间&#xff0c;响应时间的“快”“…

ELKstack-Elasticsearch各类安装部署方法

手动安装部署Elasticsearch 开篇 开篇闲话&#xff0c;如果是新人在接触ELKstack什么都不懂的情况下&#xff0c;可以先看看各位前人写的关于ELKstack的博客&#xff0c;如何对ELKstack部署安装及使用&#xff0c;但是别人的东西只能作为借鉴&#xff0c;在自己搭建使用一定要以…

美国超人气漫画科普书!85%以上中学物理考点,5岁孩子秒懂物理

▲ 点击查看今年的高考&#xff0c;不得不说&#xff0c;一度被浙江学霸刷屏&#xff01;他总分720分&#xff0c;物理等3门满分的成绩&#xff0c;最终获得“浙江高考状元”。状元能摘得桂冠&#xff0c;除了日积月累的不断努力外&#xff0c;最重要的是&#xff0c;不断调整自…

gevent 学习笔记一

import geventdef a():print a starting....gevent.sleep(1)print a endingdef b():print b starting....gevent.sleep(1)print b endinggevent.joinall([gevent.spawn(a), gevent.spawn(b) ]) 结果显示&#xff0c;用gevent并不会因为gevent.sleep而造成阻塞,但用内置的time.s…

当前联机日志损坏恢复

2019独角兽企业重金招聘Python工程师标准>>> 环境模拟 删除状态为active的联机日志&#xff0c;然后强行关闭数据库 处理过程 SQL> startup ORACLE instance started. Total System Global Area 167772160 bytes Fixed Size 1260720 bytes Variable Size 1426071…

权威杂志评选出的十个最伟大的公式,爱因斯坦的质能方程竟然只能排第六!简直神仙打架....

全世界只有3.14 % 的人关注了爆炸吧知识难决高下各有千秋当数学家得出方程式和公式&#xff0c;如同看到雕像&#xff0c;美丽的风景&#xff0c;听到优美的曲调等等一样而得到充分的快乐。——柯普宁公式&#xff0c;是数学世界中一道美丽的风景&#xff0c;一个小小的等式&am…

在Idea中测试各JVM语言的交互性

为什么80%的码农都做不了架构师&#xff1f;>>> 背景&#xff1a; 假设出现这样的场景&#xff0c;一个Java项目中&#xff0c;需要用其他语言来编写相关模块&#xff0c;但需要能被Java调用 测试工具&#xff1a;Idea12 测试语言&#xff1a;Groovy、Scala、Ko…

android pcm调节音量,调整PCM语音数据的音量

通过编程实现调整PCM的音量&#xff0c;具体做法是乘上一个固定的数&#xff0c;但是要考虑数据的溢出问题&#xff0c;代码如下&#xff1a;//调节PCM数据音量//comment : 对PCM数据的音量进行放大//parameter :// pData PCM数据// nLen PCM数据的长度// nBitsPerSample 每个S…

.NET 大会今日开幕 |这些白嫖福利不看肠子都悔青

{ 12.18 线上开幕 文末有福利 }2021 .NET 开发者大会&#xff0c;今日开幕你是否已经满怀期待&#xff0c;同时又有很多疑问“ 会场在哪里&#xff1f;” "哪些大咖会参加&#xff1f;"“ 技术主题有哪些&#xff1f;” “ 什么时间有福利&#xff1f;”…时间不多了…

asp.net web常用控件FileUpload(文件上传控件)

2019独角兽企业重金招聘Python工程师标准>>> FileUpload控件的主要中能&#xff1a;向指定目录上传文件&#xff0c;该控件包括一个文本框和一个浏览按钮。 常用的属性&#xff1a;FileBytes&#xff0c;FileContent、FileName、HasFile、PostedFile。 常用的方法&a…

设计模式:面向对象的设计原则下(ISP、DIP、KISS、YAGNI、DRY、LOD)

本文继续来介绍接口隔离原则&#xff08;ISP&#xff09;和依赖倒置原则&#xff08;DIP&#xff09;&#xff0c;这两个原则都和接口和继承有关。文章最后会简单介绍几个除了 SOLID 原则之外的原则。接口隔离原则&#xff08;ISP&#xff09;提起接口&#xff0c;开发人员的第…

ADB server didn't ACK

当我们通过eclipse开发Android应用时&#xff0c;会连接真机会使用模拟器进行仿真&#xff0c;有时候启动失败&#xff0c;会提示这样的错误。 工具/原料 Eclipse CMD命令窗口 方法/步骤 首先通过CMD启动adb服务。这个时候会提示启动失败。 服务启动失败的原因有很多&#xff0…