撞桿子的CC學姐

2021-10-02 05:57:13 字數 1635 閱讀 2489

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原始碼相關的資料。今天總算是跌跌撞撞的看完了,有點小激動,也有點小失望 雖然看完了,但是用兩個字概括看完的感受就是 糊塗 其實我也知道,想看懂一本書,看一遍不行。...