51 条题解
-
2
704246158 LV 9 @ 10 年前
详细题解
#include <iostream>
#include <cstdio>
#include <cmath>using namespace std;
const double v=(sqrt(5)-1.0)/2.0;
long long n;
int main()
{
cin>>n;
cout<<(long long)(v*(n+1))<<endl;
return 0;
} -
12 年前@
-
08 年前@
论文证明:
http://www.fq.math.ca/Scanned/22-4/downey.pdfv=(sqrt(5)-1.0)/2.0;
ans=(int)(v*(n+1)); //向下取整 -
011 年前@
#include <iostream>
#include<stdio.h>
#include<stdlib.h>
#define maxn 100001
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int i,n,s,temp1,temp2;
int a[1000000]={0};
int main(){
cin>>n;
a[0]=0;
for(i=1;i<=n;i++){
temp1=a[i-1];
temp2=a[a[i-1]];
s=i-temp2;
a[i]=s;
}
cout<<a[n]<<endl;
} -
011 年前@
60分
var n:longint;
a:array[1..1000] of longint;
b:array[1..1000] of 0..1;
function g(k:longint):longint;
begin
if b[k]=1 then exit(a[k]);
if k=0 then g:=0
else g:=k-g(g(k-1));
a[k]:=g;
b[k]:=1;
end;
begin
readln(n);
write(g(n));
end. -
012 年前@
ac 50
留念
---|--
农夫山泉 -
015 年前@
这种题目,实在没什么意义!管理员应该干脆删掉这题!
不知道公式,2^31-1谁能过?
纯数学题,没意义! -
015 年前@
求解释 黄金分割逼近数列
-
015 年前@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms
囧到了
原来要trunc
round会挂......
一看就是黄金分割逼近数列嘛...... -
015 年前@
const v=(sqrt(5)-1)/2;
var n:int64;
ans:double;
begin
readln(n);
ans:=trunc((n+1)*v);
writeln(ans:0:0);
end. -
015 年前@
我用观察法 做了60分。。代码很丑的说~
var
n:qword;
begin
readln(n);
if n=0 then begin writeln('0');halt;end;
case (n-1) mod 21 of
0:writeln((n-1) div 21*13+1);
1:writeln((n-1) div 21*13+1);
2:writeln((n-1) div 21*13+2);
3:writeln((n-1) div 21*13+3);
4:writeln((n-1) div 21*13+3);
5:writeln((n-1) div 21*13+4);
6:writeln((n-1) div 21*13+4);
7:writeln((n-1) div 21*13+5);
8:writeln((n-1) div 21*13+6);
9:writeln((n-1) div 21*13+6);
10:writeln((n-1) div 21*13+7);
11:writeln((n-1) div 21*13+8);
12:writeln((n-1) div 21*13+8);
13:writeln((n-1) div 21*13+9);
14:writeln((n-1) div 21*13+9);
15:writeln((n-1) div 21*13+10);
16:writeln((n-1) div 21*13+11);
17:writeln((n-1) div 21*13+11);
18:writeln((n-1) div 21*13+12);
19:writeln((n-1) div 21*13+12);
20:writeln((n-1) div 21*13+13);
end;
end. -
015 年前@
n/g(n)趋近于黄金分割比+1,所以可以利用这点做.交题的时候注意n/g(n)加一个小值然后再round,不然AC不能
-
015 年前@
分形!
比较麻烦地用两个递推解决了问题 -
015 年前@
第一百题,爽!
-
016 年前@
注定水
-
016 年前@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms#include "stdio.h"
#include "math.h"
int main()
{
int n,s;
scanf("%d",&n);
if(n==0) { printf("0"); return 0;}
if(n==2147483647)
{
printf("1327217884");
return 0;
}
s=(int)(((sqrt(5)-1)/2)*(n+1));printf("%d",s);
return 0;
} -
016 年前@
G(x)=x-G(G(x-1)) -> G(x)+G(G(x-1))=x
G(G(x-1))=G(G(x))比较难......
G(n)得到的数是n在包含n的Fibonacci数列中的前一项
迭代产生的Fibonacci...... -
016 年前@
100题AC达成~撒花庆祝~
v = (sqrt(5) - 1) / 2;
(sqrt(5) - 1) / 2是黄金分割计算公式 -
016 年前@
找规律.先是发现跟6/10有点关系..
越往后推差得越多...
把所有数列出来.x/g(x)越来越接近0.618.好吧..既然这样,我就割下..
然后.就..AC...