題目:任意給定乙個正整數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 很大呢,那麼計算量也是很大的,所以,我們需要尋求更好的解決辦法。書中提...