【Code pratice】——排他平方数
Date:2022?10?05\color{FF22CC}{Date:2022-10-05}Date:2022?10?05
The\color{FF22CC}{The}The second\color{FF22CC}{second}second day\color{FF22CC}{day}day wake\color{FF22CC}{wake}wake up\color{FF22CC}{up}up me\color{FF22CC}{me}me not\color{FF22CC}{not}not alarm\color{FF22CC}{alarm}alarm clock,\color{FF22CC}{clock,}clock, infact,\color{FF22CC}{in fact,}infact, is\color{FF22CC}{is}is dream!\color{FF22CC}{dream!}dream!
文章目錄
- 🌭1. 排它平方數(shù)🌭
- 🍟題目🍟
- 🍟思路🍟
- 🍟代碼🍟
🌭1. 排它平方數(shù)🌭
🍟題目🍟
具有這樣兩個神奇的六位數(shù),它的每個數(shù)位上的數(shù)字都是不同的,并且它平方后的所有數(shù)位上都不出現(xiàn)組成它自身的數(shù)字
🍟思路🍟
根據(jù)題目,可以得出三個關(guān)鍵點:1. 這兩個數(shù)字是6位數(shù);2. 這兩個數(shù)字的每一位都不相同;3. 這兩個數(shù)的平方數(shù)的每一個數(shù)位都不包含原數(shù)字的任一個數(shù)字
透過這三點也就得出了基本的思路,先判斷是不是六位數(shù),再判斷當前數(shù)字上是否有相同的數(shù)字的位,最后再對比平方后的數(shù)字是否出現(xiàn)了原數(shù)字上的任一一位
最后簡化理解就是判斷0~9這10個數(shù)字的出現(xiàn)次數(shù)是否唯一即可,下面記錄下怎么判斷數(shù)字出現(xiàn)的唯一性
通過一個數(shù)組,用下標表示數(shù)字,對應(yīng)的值表示該數(shù)字出現(xiàn)的次數(shù),如果次數(shù)出現(xiàn)2次,即說明該數(shù)字不符合第二點要求
前面使用一個數(shù)組記錄了原數(shù)字的每一位,這里只需要對比平方后的數(shù)字的每一位是否在數(shù)組中出現(xiàn)過即可
🍟代碼🍟
void ExclusiveSquare() {vector<int> res(2, 0);int resNum = 0;for (long long i = 123456; i <= 987654; i++){vector<int> OriNum(10, 0);bool bValid6 = true;bool bValidSqu = true;int tmp = i;while (tmp){if (OriNum[tmp % 10]){bValid6 = false;break;}OriNum[tmp % 10]++;tmp /= 10;}if (!bValid6){continue;}long long uSqu = i * i;while (uSqu){if (1 == OriNum[uSqu % 10]){bValidSqu = false;break;}uSqu /= 10;}if (!bValidSqu){continue;}res[resNum++] = i;}cout << "The only two exclusive squares are [" << res[0] << ", " << res[1] << "]" << endl; }總結(jié)
以上是生活随笔為你收集整理的【Code pratice】——排他平方数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle的dbtime,Oracle
- 下一篇: 猜猜看游戏