17級學姐中有個學姐,人稱撞桿子的cc,因為cc學姐走路的時候總是在低頭玩手機,所以經常撞桿子,在一次把鼻子撞破後,cc學姐在想自己出一次門究竟要撞多少個桿子。一天cc學姐打算去廣場玩,已知cc學姐走完全程共撞n次桿子,cc學姐第一次撞桿子時是走了1公尺的時候,每次撞完桿子後潛意識都會改變自己的小心程度,即第i次撞桿子後經過2i % 107公尺後會撞下乙個桿子,現在cc學姐想知道自己走了多遠
輸入格式
輸入乙個n(1
<= n <=10^
5),cc學姐走完全程要撞的桿子數量
輸出格式
輸出乙個s,cc學姐走完全程所走的距離
樣例輸入 copy
1
34
樣例輸出 copy
1
715
多組測試資料,請在輸入時迴圈輸入到檔案尾,共700組資料,請控制程式執行時間
分析題意:
撞n次桿子
第1次撞,走1公尺;( 2^0 m )
第i次撞桿子後(i+1次撞)經過2^i % 107 m後會撞下乙個桿子
經過n次撞擊,cc學姐走完全程所走的距離為
2^0+2^1
+2^2
+……+2^n-1
根據這個公式,寫出如下**:
#include
long
long
intfun
(long
long
int a,
long
long
int n)
return ans;
}main()
當然,對於求2^i%107,可以想到用快速冪寫。
先考慮a^b,再用取模公式
如求 5^10
1.指數10轉二進位制為1010
1 0 1 0
8 4 2 1
5^8 5^4 5^2 5^1
5^10 = 5^2 *5^8
二進位制位為1,累乘,為0,不累乘
2. 從右至左依次取出1010的每一位
如b=10
b&1,(b>>1)&1,(b>>2)&1,(b>>3)&1………
直到b右移後為0停止
3.取模運算公式:
(ab) mod c = ((a mod c)(b mod c)) mod c
a^b mod c =((a mod c)^b) mod c
定義乙個函式mode(int a,int b, int c),其作用為求a^b%c
b從0到n-1,在main函式中用for迴圈實現,並用ans累加
**如下:
#include
long
long
intmode
(int a,
int b,
int c)
//該函式作用求a^b%c
return ans;
}main()
printf
("%lld\n"
,ans);}
}
簡單快速冪求模分析(C語言) 撞桿子的CC學姐
問題 c 撞桿子的cc學姐 描述17級學姐中有個學姐,人稱撞桿子的cc,因為cc學姐走路的時候總是在低頭玩手機,所以經常撞桿子,在一次把鼻子撞破後,cc學姐在想自己出一次門究竟要撞多少個桿子。一天cc學姐打算去廣場玩,已知cc學姐走完全程共撞n次桿子,cc學姐第一次撞桿子時是走了1公尺的時候,每次撞...
UVA1638 桿子的排列
有高為 1,2,n 的 n 根桿子排成一排,從左向右能看到 l 根,從右向左能看到 r 根。求有多少種可能的排列方式。資料範圍僅200,本來是往組合數學方面想的,看到了這個200就放棄了念頭,果然是dp 定義dp i j k 是用了高度為1 i的桿子,從左邊能看到j個,從右邊能看到k個 如果從1轉移...
跌跌撞撞的看完了《jquery技術內幕》
今年2月20日買的書,今天是5月26,三個月來,除了週末休息一天,如果沒有特殊情況,我都會每晚花兩個小時看這本書,以及查各種與jquery原始碼相關的資料。今天總算是跌跌撞撞的看完了,有點小激動,也有點小失望 雖然看完了,但是用兩個字概括看完的感受就是 糊塗 其實我也知道,想看懂一本書,看一遍不行。...