尋找符合條件的整數

2021-08-25 10:14:04 字數 1322 閱讀 5010

題目:任意給定乙個正整數n,求乙個最小的正整數m(m>1),使得n*m的十進位制表示形式裡只含有1和0.

解決這個問題首先考慮對於任意的n,是否這樣的m一定存在。可以證明,m是一定存在的,而且不唯一。

簡單證明:因為

這是乙個無窮數列,但是數列中的每一項取值範圍都在[0, n-1]之間。所以這個無窮數列中間必定存在迴圈節。即假設有s,t均是正整數,且s

int hasonlyoneandzero(unsigned int n)

return 1;

}

int main()

}

}

return 0;

} #include

int hasonlyoneandzero(unsigned int n)

return 1;

}int main() }}

return 0;

} 方法三的源**:

// 解法三(1):廣度優先搜尋

#define _crt_secure_no_warnings 1

#include

#include

using namespace std;

int main()

q.push(t * 10);

q.push(t * 10 + 1);

}

}

return 0;

}

方法四源**:

// 解法四:將搜尋空間分過類的廣度搜尋,這樣空間占用是o(n)而不是

// 指數級。分類的原則是按照模n的餘數分類 

#define _crt_secure_no_warnings 1

#include

#include

#include

#include

using namespace std;

struct qnode

qnode(): v(0), r(0) {}

};

int main()

q.pop();

if(!bn[t.r * 10 % n])

if(!bn[(t.r * 10 + 1) % n])

}

}

ok:;

}

return 0;

}

7 16 求符合給定條件的整數集

給定不超過6的正整數a,考慮從a開始的連續4個數字。請輸出所有由它們組成的無重複數字的3位數。輸入在一行中給出a。輸出滿足條件的的3位數,要求從小到大,每行6個整數。整數間以空格分隔,但行末不能有多餘空格。2234 235 243 245 253 254 324 325 342 345 352 35...

程式設計之美2 8 找符合條件的整數

問題 任意給定乙個正整數n,求乙個最小的正整數m m 1 使得n m的十進位制表示形式裡只含有1和0。解法 由於沒有直接的數學方法能幫我們直接得到m的值,所以我們只能進行搜尋。由於相對m,乘積n m具有明顯的特徵,需要搜尋的空間要小很多,所以我們對乘積n m進行搜尋。如果n m的結果有k位,則要迴圈...

程式設計之美2 8 找符合條件的整數

這個題目是,給定乙個整數 n,需要尋找另外乙個整數 m,使得 n m 得到的結果十進位制表示中只存在1和0兩個數字。首先看到這個題目,第一思想肯定是 使 m 1,並依此遞增 m 的值,直到 n m 獲得想要的效果,但是,如果 n 很大呢,那麼計算量也是很大的,所以,我們需要尋求更好的解決辦法。書中提...