[テストコード]標準1065漢数-C+,PYTHON


に質問


正の整数Xの各位置が等差数列である場合、その数を1つの数と呼ぶ.等差数列とは、連続する2つの数の差が一定の数列を指す.Nが指定されている場合は、1以上N以下の数値を出力するプログラムを作成します.

✔入力


最初の行は、1000以下の自然数Nを与える.

✔出力


最初の行は、1以上、N以下の数値を出力します.

💖 問題を解く


等差数列の増加数は3桁から始まる.入力値が1000未満であるため、等差d値を用いて−4〜4を求める.

💖 C++コード

#include <iostream>

using namespace std; 

int main() {

	int n; 
	cin >> n; 
	int count = 0; 
	int number = 0 ;

	if (n < 100) {// 2자리, 1자리 숫자인 경우 
		count = n; 
	}
	else { // 3자리 숫자인 경우 
		for (int hundreds=1; hundreds <= 9 ;hundreds++) {
			int tens = 1;// 십의 자리 
			int ones = 1;// 일의 자리

			for (int d = -1; d >= -4; d--) { // d가 음수인 경우 
				tens = hundreds + d;
				ones = tens + d;
				if (tens < 0 || ones < 0) break;
				number = hundreds * 100 + tens * 10 + ones;
				if (number > n)continue; 
				else count++;
			//	cout << number << "\n";
			}

			for (int d = 0 ; d<=4; d++) {  //d가 0보다 큰 경우 
				tens = hundreds + d;
				ones = tens + d;
				if (ones >= 10)break;

	
				number = hundreds * 100 + tens * 10 + ones;
				if (number > n)continue;
				else count++; 
			//	cout << number << "\n";
			}
			
		}
		count += 99; 
	}
	

	cout  <<count ;

	return 0;
}

💖 Pythonコード

n = int(input()) 
count  = 0 
number = 0 

if n < 100: 
    count=  n 
else :
    for hundreds in range(1,10): 
        tens = 1 # 십의 자리 
        ones = 1 # 일의 자리 
        for d in range(-1,-5,-1): 
            tens = hundreds + d 
            ones = tens + d
            if (tens < 0 or ones < 0 ): 
                break 
            number = hundreds*100 + tens*10 + ones*1 
            if (number > n): 
                continue
            else:
                #print(number)
                count = count + 1 
        for d in range(0,5): 
            tens = hundreds + d 
            ones = tens + d
            if (ones >= 10): 
                break 
            number = hundreds*100 + tens*10 + ones*1 
            if (number > n): 
                continue
            else: 
                #print(number)
                count = count + 1 
    count = count + 99
            
print(count)