⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1250(tle).cpp

📁 杭电 acm部分代码 有兴趣的可以下载 谢谢
💻 CPP
字号:
#include<stdio.h>
#include<string.h>
#define MAX 10005
void transform(char str[],int result[])
{
	int len=strlen(str),i;
	memset(result,0,sizeof(int)*MAX);
	for(result[0]=len,i=0;i<len;i++) result[len-i]=str[i]-'0';
	return;
}
void transback(char str[],int result[]){
    int i;
    for(i=0;i<result[0];i++)
        str[i]=result[result[0]-i]+48;
}
void plus(int operator_1[],int operator_2[],int result[])
{
	int sum[MAX],i,len=operator_1[0]>operator_2[0]?operator_1[0]:operator_2[0];
	memset(sum,0,sizeof(int)*MAX);
	for(i=1;i<=len;i++){
		sum[i]+=operator_1[i]+operator_2[i];
		if(sum[i]>=10) sum[i]-=10,sum[i+1]++;
	}
	sum[0]=sum[i]==0?len:len+1;
	memcpy(result,sum,sizeof(int)*MAX);
	return;
}
void main()
{
    int n,i,j;
    char s[6][10000];
    int nu[6][10000];
    while(scanf("%d",&n)!=EOF){
        for(i=0;i<6;i++){
            memset(s[i],0,sizeof(s[i]));
            memset(nu[i],0,sizeof(nu[i]));
        }
        for(i=1;i<5;i++)
            strcpy(s[i],"1");
        if(n<=4)    printf("1\n");
        else{
            for(i=5;i<=n;i++){
                for(j=1;j<=4;j++){
                    memset(nu[j],0,sizeof(nu[j]));
                    transform(s[j],nu[j]);
                }
                memset(nu[0],0,sizeof(nu[0]));
                plus(nu[1],nu[2],nu[0]);
                memset(nu[1],0,sizeof(nu[1]));
                plus(nu[0],nu[3],nu[1]);
                memset(nu[5],0,sizeof(nu[5]));
                plus(nu[1],nu[4],nu[5]);
                transback(s[5],nu[5]);
                for(j=1;j<5;j++)
                    strcpy(s[j],s[j+1]);
            }
            printf("%s\n",s[5]);
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -