【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. 排它平方數🌭
- 🍟題目🍟
- 🍟思路🍟
- 🍟代碼🍟
🌭1. 排它平方數🌭
🍟題目🍟
具有這樣兩個神奇的六位數,它的每個數位上的數字都是不同的,并且它平方后的所有數位上都不出現組成它自身的數字
🍟思路🍟
根據題目,可以得出三個關鍵點:1. 這兩個數字是6位數;2. 這兩個數字的每一位都不相同;3. 這兩個數的平方數的每一個數位都不包含原數字的任一個數字
透過這三點也就得出了基本的思路,先判斷是不是六位數,再判斷當前數字上是否有相同的數字的位,最后再對比平方后的數字是否出現了原數字上的任一一位
最后簡化理解就是判斷0~9這10個數字的出現次數是否唯一即可,下面記錄下怎么判斷數字出現的唯一性
通過一個數組,用下標表示數字,對應的值表示該數字出現的次數,如果次數出現2次,即說明該數字不符合第二點要求
前面使用一個數組記錄了原數字的每一位,這里只需要對比平方后的數字的每一位是否在數組中出現過即可
🍟代碼🍟
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; }總結
以上是生活随笔為你收集整理的【Code pratice】——排他平方数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle的dbtime,Oracle
- 下一篇: 猜猜看游戏