日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【Code Pratice】—— 等差素数列、错误票据、神奇算式

發布時間:2024/1/1 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Code Pratice】—— 等差素数列、错误票据、神奇算式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 1 | 等差素數列
    • 題目
    • 思路
    • 邏輯代碼
  • 2 | 錯誤票據
    • 題目
    • 思路
    • 邏輯代碼
  • 3 | 神奇算式
    • 題目
    • 思路
    • 邏輯代碼

1 | 等差素數列

題目

2,3,5,7,11,13,…是素數序列。
類似:7,37,67,97,127,157 這樣完全由素數組成的等差數列,叫等差素數數列。
上邊的數列公差為30,長度為6。
2004年,格林與華人陶哲軒合作證明了:存在任意長度的素數等差數列。
這是數論領域一項驚人的成果!
有這一理論為基礎,請你借助手中的計算機,滿懷信心地搜索:
長度為10的等差素數列,其公差最小值是多少?

思路

抓住題目的兩個關鍵點:1. 等差數列,2. 素數

  • 等差數列中每前后項的差都是相等的,即存在一個確定的公差
  • 素數列中每一項都是素數
  • 思路大概如下

  • 選定一個數作為后面構造等差數列的公差(因為題目要求最小公差,所以公差可以從1開始遍歷選擇)
  • 選定一個素數作為等差素數列的首項(等差素數列的首項應是最小或最大的,為了方便計算,可選擇2為每一次嘗試的首項)
  • 由這個首項 + 公差構造出后面每一項的值
  • 判斷這個等差數列中是否每一項都是素數,是則返回這個等差素數列,反之繼續
  • 邏輯代碼

    int ArithmeticPrimeSequence(int i_uNum) {if (0 > i_uNum){return 0;}vector<int> res;int ComRatioMin = 1;for (int i = 1; i < 1000; i++){for (int j = 2; j < 10000; j++){if (IsPrimeNum(j)){int tmp = j;res.push_back(tmp);for (int k = 1; k < i_uNum; k++){tmp += i;if (IsPrimeNum(tmp)){res.push_back(tmp);}else{res.clear();break;}}}if (i_uNum == res.size()){ComRatioMin = i;break;}}if (i_uNum == res.size()){ComRatioMin = i;break;}}cout << "The minimum common ratio = [" << ComRatioMin << "]." << endl;cout << "Result sequence: [";for (int i = 0; i < res.size(); i++){if (i == res.size() - 1){cout << res[i] << "]." << endl;}else{cout << res[i] << " ";}}return 1; }

    2 | 錯誤票據

    題目

    某涉密單位下發了某種票據,并要在年終全部收回。
    每張票據有唯一的ID號。全年所有票據的ID號是連續的,但ID的開始數碼是隨機選定的。
    因為工作人員疏忽,在錄入ID號的時候發生了一處錯誤,造成了某個ID斷號,另外一個ID重號。
    你的任務是通過編程,找出斷號的ID和重號的ID。
    假設斷號不可能發生在最大和最小號。
    輸入格式
    要求程序首先輸入一個整數N(N<100)表示后面數據行數。
    接著讀入N行數據。
    每行數據長度不等,是用空格分開的若干個(不大于100個)正整數(不大于100000),以-1結束每行輸入
    每個整數代表一個ID號。
    輸出格式
    要求程序輸出1行,含兩個整數m n,用空格分隔。
    其中,m表示斷號ID,n表示重號ID

    樣例
    輸入1
    2
    5 6 8 11 9
    10 12 9

    輸出1
    7 9

    輸入2
    6
    164 178 108 109 180 155 141 159 104 182 179 118 137 184 115 124 125 129 168 196 -1
    172 189 127 107 112 192 103 131 133 169 158 -1
    128 102 110 148 139 157 140 195 197 -1
    185 152 135 106 123 173 122 136 174 191 145 116 151 143 175 120 161 134 162 190 -1
    149 138 142 146 199 126 165 156 153 193 144 166 170 121 171 132 101 194 187 188 -1
    113 130 176 154 177 120 117 150 114 183 186 181 100 163 160 167 147 198 111 119 -1

    輸出2
    105 120

    思路

  • 因為所有的ID都是連續的,所以先將所有ID進行排序
  • 斷號ID的特征就是它的上一個ID與下一個ID差值不為1
  • 重復ID的特征就是前后兩個ID值一樣
  • 邏輯代碼

    void WrongTicket(int i_uNum) {vector<int> res;int BrokenNum = 0;int RepeatNum = 0;for (int i = 0; i < i_uNum; i++){int tmp = 0;while (tmp != -1){cin >> tmp;res.push_back(tmp);}}ort(res, true);for (int i = 0; i < res.size() - 1; i++){if (res[i] == res[i + 1]){RepeatNum = res[i];}if ((res[i] != (res[i + 1] - 1)) && (res[i] != res[i + 1])){BrokenNum = res[i] + 1;}}cout << "Broken number = [" << BrokenNum << "]" << endl;cout << "Repeat number = [" << RepeatNum << "]" << endl; }

    3 | 神奇算式

    題目

    由4個不同的數字,組成的一個乘法算式,它們的乘積仍然由這4個數字組成。
    比如:

    210 x 6 = 1260 8 x 473 = 3784 27 x 81 = 2187

    都符合要求。
    如果滿足乘法交換律的算式算作同一種情況,那么,包含上邊已列出的3種情況,一共有多少種滿足要求的算式

    思路

    神奇算式有兩個關鍵點

  • 兩個乘數的位數和 = 4
  • 乘積的位數仍為 4,且這四位數是兩個乘數的位數
  • 大概思路如下:

  • 確定兩個乘數的范圍

  • 記錄下兩個數的數值,以及各個位的數字,并判斷這兩個數是否符合要求
    怎么記錄各個位的數值?
    定義一個10長度的數組,如果0~9剛好對應各個數字,如果出現對應數字,數組對應位加一即可

  • 判斷乘積是否符合要求
    怎么對比乘積的四位數與乘數的四位數是否相同?
    通過使用上面定義的數組,獲取該乘積的每一位,對應位的數值減一,如果最后數組中出現-1值,或非全0值,則證明四位數不相同

  • 排除干擾項
    什么是干擾項?
    如下列兩個式子看起來都是神奇算式
    30 * 51 = 1530
    51 * 30 = 1530
    這兩個式子實際上屬于同一個神奇算式,只是兩個乘數位置對調了,如果不排除這個類型的式子的話,就會導致得到的結果存在多個重復項

  • 怎么排除?
    只需要判斷當前的兩個乘數是否存在于前面存下來的數組中即可

    邏輯代碼

    int MagicFormula() {vector<int> num(10, 0);vector<pair<int, int>> Mult;int res = 0;int min1 = 0;int max1 = 0; int min2 = 0;int max2 = 0; for (int i = 1; i <= 2; i++){if (1 == i){min1 = 1;max1 = 9;min2 = 123;max2 = 987;}else{min1 = 12;max1 = 98;min2 = 12;max2 = 98;}for (int j = min1; j <= max1; j++){for (int k = min2; k <= max2; k++){int sum = 0;if (IsValidMultiplier(j, k, num)){sum = j * k;int tmp = sum;while (tmp){num[tmp % 10]--;tmp /= 10;}int cnt = count(num.begin(), num.end(), 0);if (10 == cnt){int cnt1 = count(Mult.begin(), Mult.end(), pair<int, int>(j, k));int cnt2 = count(Mult.begin(), Mult.end(), pair<int, int>(k, j));if (0 == cnt1 && 0 == cnt2){Mult.emplace_back(j, k);cout << j << " * " << k << " = " << sum << endl;res++;}}}fill(num.begin(), num.end(), 0);}}}return res; }

    總結

    以上是生活随笔為你收集整理的【Code Pratice】—— 等差素数列、错误票据、神奇算式的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 亚洲97色| 杂技xxx裸体xxxx欧美 | 免费成人av网址 | 亚洲成人高清在线 | 日韩在线第二页 | 日本欧美成人 | 日韩av在线导航 | 国产精品久久久久久久久久久久午夜片 | 欧美天堂网站 | 亚洲精品福利在线 | 亚洲一级无毛 | 日本男女激情视频 | 日日插日日操 | 河北彩花av在线播放 | 亚洲免费在线观看av | 在线91观看 | av男人在线| 日本真人做爰免费视频120秒 | 操你啦影院 | 98视频在线 | 69xav| 久久日本视频 | 日韩少妇高潮抽搐 | 四虎少妇做爰免费视频网站四 | 国产九色在线 | 欧美一区二区三区视频 | 精品成人网 | 欧洲亚洲另类 | 性做久久久久久久免费看 | 欧美一级视频免费 | 国产精品久久网站 | 免费午夜视频在线观看 | 最近的中文字幕在线看视频 | 男生把女生困困的视频 | 日本系列第一页 | 精品人妻无码一区二区性色 | 欧美国产二区 | 伊人91| 亚洲三级在线播放 | 玉米地疯狂的吸允她的奶视频 | 欧美视频网站 | 嫩草视频在线看 | 一区二区三区视频免费观看 | 久久99热久久99精品 | 免费日本在线 | 亚洲乱码国产乱码精品精剪 | 欧美福利一区二区 | 日韩最新中文字幕 | 亚洲高清免费 | 精品人妻一区二区三区久久 | 亚洲免费小视频 | 日韩视频免费观看高清完整版在线观看 | 国产91沙发系列 | 香蕉国产在线观看 | 日韩精品一区二区三区免费视频 | 欧美三级韩国三级日本三斤在线观看 | 超碰在线国产97 | 色亚洲色图| 色偷偷成人 | 亚洲视频二区 | 国产性―交―乱―色―情人 | 久久久久成人网站 | 国产免费自拍视频 | 国产又粗又猛又爽又黄又 | www免费黄色 | 河北彩花av在线播放 | 日本亚洲最大的色成网站www | 一级免费看 | 久草中文网 | 强伦轩人妻一区二区电影 | 亚洲精品久久夜色撩人男男小说 | 午夜在线免费观看视频 | 国产 中文 字幕 日韩 在线 | 五月激情六月 | 日韩亚洲在线 | 亚洲黄色在线免费观看 | 人妻少妇偷人精品无码 | 青青草操| 欧美情趣视频 | 色图18p| 高清一区二区 | 亚洲免费黄网 | 台湾性dvd性色av | 日韩黄页网站 | 欧洲亚洲另类 | av免费观看网 | 中文字幕一区二区三区免费看 | 麻豆网站在线 | av一道本| 夜夜嗨老熟女av一区二区三区 | 久久免费av | 中文字幕在线观看网址 | 91人妻一区二区 | 伊人久综合 | 亚洲精品国产精品国自产网站 | 欧美精品入口蜜桃 | 欧美亚洲在线视频 | 青青草久久爱 | 成人免费毛片东京热 |