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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

顺序查找-判断质数/记录出现次数

發(fā)布時間:2025/3/15 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 顺序查找-判断质数/记录出现次数 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

描述

笨小猴的詞匯量很小,所以每次做英語選擇題的時候都很頭疼。但是他找到了一種方法,經(jīng)試驗證明,用這種方法去選擇選項的時候選對的幾率非常大!

這種方法的具體描述如下:假設(shè)maxn是單詞中出現(xiàn)次數(shù)最多的字母的出現(xiàn)次數(shù),minn是單詞中出現(xiàn)次數(shù)最少的字母的出現(xiàn)次數(shù),如果maxn-minn是一個質(zhì)數(shù),那么笨小猴就認(rèn)為這是個Lucky Word,這樣的單詞很可能就是正確的答案。

輸入

只有一行,是一個單詞,其中只可能出現(xiàn)小寫字母,并且長度小于100。

輸出

共兩行,第一行是一個字符串,假設(shè)輸入的的單詞是Lucky Word,那么輸出“Lucky Word”,否則輸出“No Answer”;
第二行是一個整數(shù),如果輸入單詞是Lucky Word,輸出maxn-minn的值,否則輸出0。

#include<cmath>//要用到其中求開方的函數(shù)sqrt() #include<iostream> #include<cstring>//要用到其中求字符串長度的函數(shù)size() using namespace std; bool prime(int n) {if(n<2) return false;else{for (int i=2;i<int(sqrt(float(n)));i++)if(n%i==0) return false;}return true; } //判斷質(zhì)數(shù) int main() {int a[26],maxn=0,minn=1000;string s;int i;cin>>s;memset(a,0,sizeof(a));for (i=0;i<s.length();i++)a[s[i]-'a']+=1;for(i=0;i<26;i++){if(maxn<a[i])maxn=a[i];if(minn>a[i]&&a[i]!=0)minn=a[i];}if(prime(maxn-minn)==true)cout<<"Lucky Word"<<endl<<(maxn-minn)<<endl;elsecout<<"No Answer"<<endl<<0<<endl;system("pause");return 0; }

知識1:判斷質(zhì)數(shù)改寫while:

int prime(int x) //判斷質(zhì)數(shù);1是質(zhì)數(shù) 0不是質(zhì)數(shù){int j=2;if(x<2) return 0;while (j<int(sqrt(float(x)))) {if(x%j==0)return 0;j++;}return 1;}

知識2:判斷字符出現(xiàn)個數(shù)

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 的前六個字節(jié)用 * 填滿,那么能不能用下面的方法把 arr 的前六個數(shù)字初始化成 1 呢?

int arr[15]; memset(arr, 1, 6); //錯誤代碼

答:不可。

memset()?的用法是:

#include <string.h> void *memset(void *s, int c, size_t n); //語法

?memset()?函數(shù)把 s 指向的一塊內(nèi)存中每個字節(jié)的值設(shè)置為 c,內(nèi)存的大小是 n 個?bytes

強調(diào),第三個參數(shù) n 決定了開辟的內(nèi)存有多少個字節(jié)。

一個 char 占一個 byte,一個 int 占 4 個bytes。所以在上面的案例中, char 數(shù)組的初始化, 第三個參數(shù)填 6 就能初始化 6 個;如果要初始化一個 int 數(shù)組,實現(xiàn)前 6 個元素是 1 ,第三個參數(shù)不能是 6。

那么,這樣寫是正確的嗎?

int arr[15]; memset(arr, 1, sizeof(int) * 6); // 錯誤示范

我們嘗試跑一下 :

?16843009 這個數(shù)字是怎么來的?不要忘記,memset() 中,是按 byte 賦值的,那么把 4 個 byte 賦值為 1, int 值并不是 1,而是:

所以,不能用 memset() 初始化數(shù)組為 1 。但是可以將數(shù)組高效地初始化為 0 或 -1(只能是0 或 -1。原理:補碼表示法, -1 的補碼為: 0xFFFFFFFF,在內(nèi)存上是連續(xù)的, -2 就不行,-2 是 0xFFFFFFFE)?

總結(jié)

以上是生活随笔為你收集整理的顺序查找-判断质数/记录出现次数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。