Computer Transformation UVA - 1647 (C++大数模拟)

 

import java.math.*;
import java.util.*;
/*
 * 思路:
 * 数列是 0 1 1 3 5 11 21 43
 * 然后从第三项开始*2+1,*2-1,*2+1,*2-1,一直这么运算下去
 * 发现题解竟然是 a[i]=a[i-1]+2*a[i-2],这个更具通用性
 * 做法:
 * 递推要记住预处理,要不然有点浪费
 * 
 */
public class Main {
	public static void main(String []args) {
		BigInteger []arr=new BigInteger[1010];
		arr[1]=BigInteger.valueOf(0);
		arr[2]=arr[3]=BigInteger.valueOf(1);
		for(int i=4;i<=1000;i++) {
			if(i%2==1)arr[i]=arr[i-1].multiply(BigInteger.valueOf(2)).subtract(BigInteger.valueOf(1));
			else arr[i]=arr[i-1].multiply(BigInteger.valueOf(2)).add(BigInteger.valueOf(1));
		}
		Scanner cin=new Scanner(System.in);
		while(cin.hasNext()) {
			int n=cin.nextInt();
			System.out.println(arr[n]);
		}
	}
	
}
#include<bits/stdc++.h>
using namespace std;

#define rep(i,a,b) for(int i=a;i<b;i++)
#define per(i,a,b) for(int i=b-1;i>=a;i--)

int mi[1010][100];
int ans[1010][100];
/*
C++分段模拟
通项:a[n]=a[n-2]+2^(n-3)
*/

void init(){
    mi[0][0]=1;//
    ans[2][0]=1;
    rep(i,3,1000+1){
        rep(j,0,100){
            mi[i-2][j] +=mi[i-3][j]+mi[i-3][j];//前一项相对位置*2
            ans[i][j]+=ans[i-2][j]+mi[i-3][j];

            mi[i-2][j+1] +=mi[i-2][j]/10000; mi[i-2][j]%=10000;
            ans[i][j+1]+=ans[i][j]/10000;ans[i][j]%=10000;
        }
    }
}

int main(){
    init();
    int n;
    while(scanf("%d",&n)==1){
        int index=99;
        while(index>0&&!ans[n][index])index--;

        //这两句话很牛逼
        printf("%d",ans[n][index--]);
        while(index>=0)printf("%04d",ans[n][index--]);
        printf("\n");
    }
    return 0;
}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: UTF-8是一种针对Unicode字符集进行编码的可变长度字符编码方案。它可以用来表示Unicode字符集中的任意字符,包括各种文字、符号和控制字符。UTF-8的编码长度根据字符的Unicode编码值的大小而变化,对于ASCII字符,UTF-8编码与ASCII相同,只需要一个字节表示;对于其他Unicode字符,UTF-8编码需要2到4个字节不等。 Unicode是一种字符集标准,它旨在为世界上所有的字符提供一个唯一的标识符,无论是汉字、拉丁字母、希腊字母、数学符号还是其他任何字符,都可以在Unicode中找到对应的编码。Unicode编码使用一种唯一的数字来表示每个字符,并通过使用不同的转换格式(如UTF-8、UTF-16等)将其存储或传输。 C是一种编程语言,可用于开发各种应用程序。在C语言中,可以使用UTF-8编码来处理Unicode字符集。C语言提供了一些处理字符串和字符的库函数,这些函数支持使用Unicode字符集进行字符串操作。通过使用适当的输入输出函数和字符处理函数,C语言可以处理包含Unicode字符的文本数据。 因此,UTF-8、Unicode和C之间存在着密切的联系。UTF-8用于编码Unicode字符集,而C语言提供了处理Unicode字符集的库函数。使用UTF-8编码的Unicode字符集,可以在C语言中进行处理和操作。这为开发人员提供了在C语言中处理多语言文本数据的能力,使得开发国际化应用程序变得更加简便。 ### 回答2: UTF-8是一种以字节为单位对 Unicode 进行编码的字符编码标准。它是一种全球通用的编码方式,能够表示几乎所有语言的字符。UTF-8采用可变长度的编码方式,用1至4个字节来表示一个字符。对于英文字符来说,UTF-8使用1个字节进行编码,而对于其他字符(例如汉字)则需要2至4个字节。由于UTF-8编码的字节数不固定,这也是它比其他编码方式更被广泛使用的主要原因之一。 Unicode是一种字符集标准,它定义了世界上几乎所有的字符和符号,并为它们分配了唯一的标识码,即码点。Unicode标准中包括了超过130万个字符,从最常见的拉丁字母到各种符号、表意文字和表情符号等。Unicode采用的是固定长度的编码方式,其中最常用的是UTF-16和UTF-8。 C语言中,通常使用utf-8编码来存储和处理字符串。由于UTF-8是一种基于字节的编码方式,它与C语言中的字符类型(char)能够相互兼容。在C语言中,可以使用char类型的数组来表示和处理UTF-8编码的字符串,同时也可以使用多字节字符集的函数库来处理UTF-8字符串。 总之,UTF-8是一种按字节编码的 Unicode 字符编码标准,它能够表示全球范围内几乎所有语言的字符。而Unicode是一个字符集标准,用于定义和标识世界上几乎所有的字符和符号。在C语言中,通常使用UTF-8编码来处理和存储字符串。 ### 回答3: UTF-8与Unicode是两种不同的字符编码方式,而C是一种计算机程序设计语言。 UTF-8(Universal Character Set Transformation Format-8)是一种可变长编码的Unicode字符编码方式。它可以用于表示Unicode字符集中的所有字符,包括拉丁字母、中日韩文字等。UTF-8编码使用1至4个字节表示不同的字符,具有较好的兼容性和可变长度特性,使得它在互联网传输中广泛应用。 Unicode是一种字符集标准,它为世界上几乎所有的字符都分配了一个唯一的数字。Unicode的目的是为了实现全球化的字符表示,使得不同国家的字符都能够得到统一的编码。 C是一种广泛应用于系统软件开发和嵌入式系统的高级程序设计语言。它是一种通用的、结构化的、面向过程的编程语言,具有高效、强大和灵活的特点。C语言原生支持ASCII编码,但对于使用UTF-8或Unicode编码的字符,可以使用转义序列来表示。 总结起来,UTF-8是一种编码方式,用于表示Unicode字符集中的字符,而C语言是一种程序设计语言,用于编写计算机程序。在C语言中,可以使用转义序列来处理UTF-8或Unicode编码的字符。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值