Javaの単純加算ブルートフォース
タイトル:
定義の最初に、単純な加算式:
式がある場合(I)+(I + 1 )+(I + 2)、(I> = 0)、 処理の計算、誰ビット現れます単純加算式と呼ばれているキャリー、。
例えば:私は3は、3 + 4 + =場合 = 12 5は、 キャリーがあるので、3 + 4 + 5は、単純な加算式ではない。私なら= 112 + 113 + 114 112 = 339、 任意なし上のキャリー桁が、それは112 + 113 + 114で単純加算式です。
問題:
正の整数を考えると、N、場合Q I 0よりも少ないnよりは、式(I)+(I + 1の数 )+(I + 2)は、単純な加法式です。ここで、N <10000。
コード
import java.util.Scanner;
public class 简单加法
{
/**
* @param args
*/
public static void main(String[] args) {
// 问题:给定一个正整数n,问当i大于等于0且小于n时,有多少个算式(i)+(i+1)+(i+2)是简单加法算式。其中n<10000。
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int num=0;//用于计数
//暴力破解
for (int i = 0; i < n; i++)
{
//不管有没有这个位,都取出来
int a=i/10000;
int b=i/1000;
int c=i/100;
int d=i/10;
//不管有没有这个位,都取出来
int sum=i+(i+1)+(i+2);
int r=sum/10000;
int x=sum/1000;
int y=sum/100;
int z=sum/10;
//进行比较,如果有不相等的位数就说明是进位了,就直接进入下一个数
if (r>a||x>b||y>c||z>d)
{
continue;
}else {
num++;
}
}
//输出
System.out.println(num);
}
}
入力:
10
出力:
3