[テストコード]標準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)
Reference
この問題について([テストコード]標準1065漢数-C+,PYTHON), 我々は、より多くの情報をここで見つけました https://velog.io/@secdoc/코딩테스트-백준1065-한수-C-PYTHONテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol