顺序查找-判断质数/记录出现次数
描述
笨小猴的詞匯量很小,所以每次做英語選擇題的時候都很頭疼。但是他找到了一種方法,經試驗證明,用這種方法去選擇選項的時候選對的幾率非常大!
這種方法的具體描述如下:假設maxn是單詞中出現次數最多的字母的出現次數,minn是單詞中出現次數最少的字母的出現次數,如果maxn-minn是一個質數,那么笨小猴就認為這是個Lucky Word,這樣的單詞很可能就是正確的答案。
輸入
只有一行,是一個單詞,其中只可能出現小寫字母,并且長度小于100。
輸出
共兩行,第一行是一個字符串,假設輸入的的單詞是Lucky Word,那么輸出“Lucky Word”,否則輸出“No Answer”;
第二行是一個整數,如果輸入單詞是Lucky Word,輸出maxn-minn的值,否則輸出0。
知識1:判斷質數改寫while:
int prime(int x) //判斷質數;1是質數 0不是質數{int j=2;if(x<2) return 0;while (j<int(sqrt(float(x)))) {if(x%j==0)return 0;j++;}return 1;}知識2:判斷字符出現個數
string s; int t[26]; cin>>s; n=s.size(); for (int i=0;i<n;i++)t[s[i]-'a']++;知識點3:memset初始化
#include<stdio.h> #include<string.h>int main(){char str[] = "beautiful earth";memset(str, '*', 6);printf("%s", str); }Output: ******ful earth上述代碼把 str 的前六個字節用 * 填滿,那么能不能用下面的方法把 arr 的前六個數字初始化成 1 呢?
int arr[15]; memset(arr, 1, 6); //錯誤代碼答:不可。
memset()?的用法是:
#include <string.h> void *memset(void *s, int c, size_t n); //語法?memset()?函數把 s 指向的一塊內存中每個字節的值設置為 c,內存的大小是 n 個?bytes
強調,第三個參數 n 決定了開辟的內存有多少個字節。
一個 char 占一個 byte,一個 int 占 4 個bytes。所以在上面的案例中, char 數組的初始化, 第三個參數填 6 就能初始化 6 個;如果要初始化一個 int 數組,實現前 6 個元素是 1 ,第三個參數不能是 6。
那么,這樣寫是正確的嗎?
int arr[15]; memset(arr, 1, sizeof(int) * 6); // 錯誤示范我們嘗試跑一下 :
?16843009 這個數字是怎么來的?不要忘記,memset() 中,是按 byte 賦值的,那么把 4 個 byte 賦值為 1, int 值并不是 1,而是:
所以,不能用 memset() 初始化數組為 1 。但是可以將數組高效地初始化為 0 或 -1(只能是0 或 -1。原理:補碼表示法, -1 的補碼為: 0xFFFFFFFF,在內存上是連續的, -2 就不行,-2 是 0xFFFFFFFE)?
總結
以上是生活随笔為你收集整理的顺序查找-判断质数/记录出现次数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: TensorFlow4-常量和变量及Te
- 下一篇: github下载