UVALive 6270 Edge Case(找规律,大数相加)

转载请注明出处:http://blog.csdn.net/u012860063?viewmode=contents

找规律,前两个数的和等于后一个数的值;

其实就是大菲波数;

代码如下:

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
#include<cstdio>
#include<cstring>
void fan(char s[])
{
	char t;
	int i,j;
	for(i = 0,j = strlen(s)-1;i <= j;i++,j--)
	{
		t=s[i];s[i]=s[j];s[j]=t;
	}
}
char ans[10047][4000];
int main()
{
	int i,j,n,p=0,g=0,h=1,k,l;
	char x[4000],y[4000],z[4000];
	strcpy(ans[1],"1");
	strcpy(ans[2],"3");
	strcpy(ans[3],"4");
	for(int mm = 4 ; mm<= 10000; mm++)
	{
		memset(x,0,sizeof(x));
		memset(y,0,sizeof(y));
		p=0;
		strcpy(x,ans[mm-1]);
		strcpy(y,ans[mm-2]);
		fan(x);fan(y);
		k=strlen(x);
		l=strlen(y);
		for(i = 0;i < k || i< l;i++ )
		{
			if(i < k && i < l )
				z[i]=x[i]+y[i]+ p-'0';
			else if(i < k && i >= l)
				z[i]=x[i]+p;
			else if(i >= k && i < l)
				z[i]=y[i]+p;
			if(z[i]>'9')
			{
				z[i]-=10;
				p=1;
			}
			else
				p=0;
		}
		if(p)
			z[i++]='1';
		z[i]='\0';
		fan(x);fan(y);fan(z);
		strcpy(ans[mm],z);
	}
	while(~scanf("%d",&n))
	{
		printf("%s",ans[n]);
		printf("\n");
	}
	return 0;
}

UVALive 6270 Edge Case(找规律,大数相加),布布扣,bubuko.com

时间: 2024-12-19 04:58:39

UVALive 6270 Edge Case(找规律,大数相加)的相关文章

Resistors in Parallel(找规律+大数)

题意:https://codeforces.com/group/ikIh7rsWAl/contest/254825/problem/E 给你一个n,计算n / Sigma(1~n)的d(是n的只出现一次的因数). 思路: 反正就是打表找规律,3组数据也能找规律,你们是真的nb嗷. 1 import java.math.BigInteger; 2 import java.util.Scanner; 3 4 public class Main{ 5 public static void main(S

BZOJ1002(找规律+大数)

1002: [FJOI2007]轮状病毒 Time Limit: 1 Sec  Memory Limit: 162 MB Submit: 2427  Solved: 1333 [Submit][Status] Description 给定n(N<=100),编程计算有多少个不同的n轮状病毒. Input 第一行有1个正整数n. Output 将编程计算出的不同的n轮状病毒数输出 Sample Input 3 Sample Output 16 题意:RT 思路:dp[n]表示为n的方案数 打表可知

HDOJ-1041 Computer Transformation(找规律+大数运算)

http://acm.hdu.edu.cn/showproblem.php?pid=1041 有一个初始只有一个1的串 每次都按①0 -> 10;②1 -> 01;这两条规则进行替换 形如:n = 1  1 n = 2  01 n = 3  1001 ... 求经过n步替换之后 串中只含复数个0的连续子串(不难发现,这种子串只能是‘00’)的出现次数 因为0<n<=1000的限制 在最坏情况下(n==1000)串的长度将达到2^1000位 排除了直接模拟上述替换过程的可能 列出前几

UVA - 1646 - Edge Case(找规律)

题意:n(3 <= n <= 10000)个结点组成一个圈,求匹配(即没有公共点的边集)的个数. 找规律为斐波那契的性质,因为数太大所以用的java大数. import java.math.BigInteger; import java.util.Scanner; public class Main{ public static int MAXN = 10000 + 10; public static BigInteger []c = new BigInteger[MAXN]; public

Acdream 1210 Chinese Girls&#39; Amusement(大数模板运算 + 找规律)

传送门 Chinese Girls' Amusement Time Limit: 2000/1000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others) Submit Statistic Next Problem Problem Description You must have heard that the Chinese culture is quite different from that of Europe or Rus

vijos - P1447开关灯泡 (大数模板 + 找规律 + 全然数 + python)

P1447开关灯泡 Accepted 标签:CSC WorkGroup III[显示标签] 描写叙述 一个房间里有n盏灯泡.一開始都是熄着的,有1到n个时刻.每一个时刻i,我们会将i的倍数的灯泡改变状态(即原本开着的现将它熄灭,原本熄灭的现将它点亮),问最后有多少盏灯泡是亮着的. 格式 输入格式 一个数n 输出格式 m,表示最后有m盏是亮着的 例子1 例子输入1[复制] 5 例子输出1[复制] 2 限制 1s 提示 范围:40%的数据保证,n<=maxlongint 100%的数据保证,n<=

vijos - P1447开关灯泡 (大数模板 + 找规律 + 完全数 + python)

P1447开关灯泡 Accepted 标签:CSC WorkGroup III[显示标签] 描述 一个房间里有n盏灯泡,一开始都是熄着的,有1到n个时刻,每个时刻i,我们会将i的倍数的灯泡改变状态(即原本开着的现将它熄灭,原本熄灭的现将它点亮),问最后有多少盏灯泡是亮着的. 格式 输入格式 一个数n 输出格式 m,表示最后有m盏是亮着的 样例1 样例输入1[复制] 5 样例输出1[复制] 2 限制 1s 提示 范围:40%的数据保证,n<=maxlongint 100%的数据保证,n<=10^

找规律 UVALive 6506 Padovan Sequence

题目传送门 1 /* 2 找规律:看看前10项就能看出规律,打个表就行了.被lld坑了一次:( 3 */ 4 #include <cstdio> 5 #include <algorithm> 6 #include <iostream> 7 #include <cstring> 8 #include <cmath> 9 #include <string> 10 #include <vector> 11 #include &l

大数+找规律 ACdream1210 Chinese Girls&#39; Amusement

传送门:点击打开链接 题意:对于n个点围成的圈.从一个点出发,顺时针数K个位置,一直进行这个操作直到回到最初的那个点时,恰好把所有的点都访问了一遍,问最大的K(K<=n/2) 思路:很容易就想到了一种方法,找到K<=n/2,且gcd(K,n)=1,有人是用java从n/2向1去枚举的,感觉好暴力,所以当时不敢这样写 后来发现其实是有规律的,从n=3一直算下去,会得到一个这样的序列1 1 2 1 3 3 4 3 5 5 6 5 7 7 8 7 9 9 10 9..... 很明显以4个为一组,一下