hdu 1041 Computer Transformation

题目:hdu 1041 Computer Transformation

思路:打表,找规律

#include <cstdio>
#include <iostream>
#include <cmath>
#include <algorithm>
#include <cstring>
using namespace std;
string solve(string s)
{
    string str="";
    for(int i=0;i<s.size();i++)
        if(s[i]=='0')
            str+="10";
        else
            str+="01";
    return str;
}
int get(string s)
{
    int ans=0;
    for(int i=1;i<s.size();i++)
        if(s[i]=='0' && s[i-1]=='0')
            ans++;
    return ans;
}
int main()
{
    string s="1";
    for(int i=0;i<20;i++)
    {
        cout<<i<<":"<<get(s)<<endl;
        //cout<<i<<":"<<s<<":"<<get(s)<<endl;
        s=solve(s);
    }
    return 0;

}
打表
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Scanner;

public class Main
{
    public static void main(String args[])
    {
        Scanner cin=new Scanner(System.in);
        BigInteger dp[]=new BigInteger[1010];
        dp[0]=BigInteger.ZERO;
        dp[1]=BigInteger.ZERO;
        BigInteger two=BigInteger.valueOf(2);
        for(int i=2;i<1010;i++)
        {
            if(i%2==1)
                dp[i]=dp[i-1].multiply(two).subtract(BigInteger.ONE);
            else
                dp[i]=dp[i-1].multiply(two).add(BigInteger.ONE);
        }
        while(cin.hasNext())
        {
            int n=cin.nextInt();
            System.out.println(dp[n]);
        }
    }

}
AC代码
原文地址:https://www.cnblogs.com/overflow/p/3425439.html