n桁目の取得などのメモ
数値 → 文字列に変換して扱う
string s = to_string(num);
桁数の取得
string s = "1234"; int n = s.length(); cout<< n; // 4
n桁目を取得
charの演算を利用(asciiで0からの差分 + int変換に変換)
string s = "1234"; int n = s[0] - '0'; cout<< n; // 1
n桁目とm桁目をスワップ
string s = "1234"; swap(s[0], s[3]); int n = stoi(s); //必要であればintに変換 cout<< n; // 4231
数値のまま扱う
桁数の取得
基数で割っていく。商が0になるまで割る回数が桁数。
int x = 1234; int numDigit; while (x > 0) { x = x / 10; numDigit++; } cout << numDigit; //4
n桁目を取得
digit_n = (x / 10n-1) % 10
右シフトして基数で割った余り
int x = 987654321; int n = 9; int shift = x / pow(10, n-1); int digit = shift % 10; cout << digit; //9
n桁目とm桁目をスワップ
引いて足す
int x = 1234; int n = 1; int m = 4; //桁数 int numDigit = 4; //n桁目 int a = 4; //m桁目 int b = 1; int y = x - b * pow(10, m-1) - a * pow(10, n-1) + a * pow(10, m-1) + b * pow(10, n-1); cout << y; //4231