數的計算:
題目描述 description
我們要求找出具有下列性質數的個數(包含輸入的自然數n):
先輸入乙個自然數n(n<=1000),然後對此自然數按照如下方法進行處理:
1. 不作任何處理;
2. 在它的左邊加上乙個自然數,但該自然數不能超過原數的一半;
3. 加上數後,繼續按此規則進行處理,直到不能再加自然數為止.
輸入描述 input description
乙個數n
輸出描述 output description
滿足條件的數的個數
樣例輸入 sample input 6
樣例輸出 sample output 6
資料範圍及提示 data size & hint
6個數分別是:616
26126
36136
本題由資料易知可歸於數論!先做分析:
n=6:6,16 ,26,126,36,136n=7:7,17,27,127,37,137n=8:18,28,128,38,138,48,148,248,1248.
則易知在數n左方可填數<=n/2,所以相鄰兩個數具有該性質的數的個數相同又可以知道6左方可填1,2,3,而1不能再拆,2左方能填1,而3左方可填1。又因為對於乙個數對2取整可以為1或0.由資料分析可令f(1)=f(0)=1;所以有f(n)=f(0)+f(1)+..+f(n/2)
#includeint f(int n);
int main()
int f(int n)
最大公約數與最小公倍數問題
題目描述 description
輸入二個正整數x0,y0(2<=x0<100000,2<=y0<=1000000),求出滿足下列條件的p,q的個數
條件: 1.p,q是正整數
2.要求p,q以x0為最大公約數,以y0為最小公倍數.
試求:滿足條件的所有可能的兩個正整數的個數.
輸入描述 input description
二個正整數x0,y0
輸出描述 output description
滿足條件的所有可能的兩個正整數的個數
樣例輸入 sample input
3 60
樣例輸出 sample output
4
本題沒有難度在列舉計算時可以用最小公倍數=(a*b)/最大公因數簡化
#include#includeint en(int a,int n);
int lcm(int a,int b);
int main()
int en(int a,int n)
return sum;
}int lcm(int a,int b)
最大公約數簡便演算法 最大公約數演算法
1 查詢約數法 先分別找出每個數的所有約數,再從兩個數的約數中找出公有的約數,其中最大的乙個就是 最大公約數 例如,求 12 和 30 的最大公約數 12 的約數有 1 2 3 4 6 12 30 的約數有 1 2 3 5 6 10 15 30 12 和 30 的公約數有 1 2 3 6,其中 6 ...
計算最大公約數和最小公倍數
最大公因數 也稱最大公約數 最大公因子,指兩個或多個整數共有約數中最大的乙個 a,b的最大公約數記為 a,b 12,18的最大公約數是 12,18 6 計算方法 a factor 0 and b factor 0 得到 a,b factor 最小公倍數 兩個或多個整數公有的倍數叫做它們的公倍數,其中...
最大公約數 最小公倍數 演算法
兩個整數的最大公約數是能夠同時整除它們的最大的正整數。輾轉相減法基於如下原理 兩個整數的最大公約數等於其中較小的數和兩數的差的最大公約數。例如,252和105的最大公約數是21 252 21 12 105 21 5 因為252 105 147,所以147和105的最大公約數也是21。在這個過程中,較...