描述:
小易擁有乙個擁有魔力的手環上面有n個數字(構成乙個環),當這個魔力手環每次使用魔力的時候就會發生一種奇特的變化:每個數字會變成自己跟後面乙個數字的和(最後乙個數字的後面乙個數字是第乙個),一旦某個位置的數字大於等於100就馬上對100取模(比如某個位置變為103,就會自動變為3).現在給出這個魔力手環的構成,請你計算出使用k次魔力之後魔力手環的狀態。
輸入描述:
輸入資料報括兩行:
第一行為兩個整數n(2 ≤ n ≤ 50)和k(1 ≤ k ≤ 2000000000),以空格分隔
第二行為魔力手環初始的n個數,以空格分隔。範圍都在0至99.
輸出描述:
輸出魔力手環使用k次之後的狀態,以空格分隔,行末無空格。
輸入例子:
3 2
1 2 3
輸出例子:
8 9 7
分析:
由於題目中的求值非常有規律,數字成環,且當前數字等於當前數字加上後面的乙個數字,自然就可以聯想到構造矩陣,而且看到操作次數那麼大,肯定要麼找規律,要麼快速冪,然後我打表並沒有發現什麼規律,所以矩陣快速冪。
#include
using
namespace
std;
vector
> mul(vector
>a,vector
>b)
vector
> matrix_pow(vector
> matrix,int k)
return mm;
}int main()
num.push_back(t);
vector
> matrix(n,vector
(n,0));
for(int i=0;i1;
matrix[(i+1)%n][i]=1;
}vector
> mm = matrix_pow(matrix,k);
vector
> ans = mul(num,mm);
printf("%d",ans[0][0]);
for(int i=1;i0].size();i++)
printf(" %d",ans[0][i]);
puts("");
return
0;}
網易2016實習生程式設計題
有乙個整數陣列,請你根據快速排序的思路,找出陣列中第k大的數。給定乙個整數陣列a,同時給定它的大小n和要找的k k在1到n之間 請返回第k大的數,保證答案存在。測試樣例 1,3,5,2,2 5,3返回 2 主體思路就是利用快速排序每次能將比某個哨兵小的數放在左側,大的數放在右側,如下 class f...
網易2017實習生程式設計題 消除重複元素
小易有乙個長度為n序列,小易想移除掉裡面的重複元素,但是小易想是對於每種元素保留最後出現的那個。小易遇到了困難,希望你來幫助他。輸入描述 輸入包括兩行 第一行為序列長度n 1 n 50 第二行為n個數sequence i 1 sequence i 1000 以空格分隔 輸出描述 輸出消除重複元素之後...
騰訊2017暑期實習生程式設計題
刷題 pragma warning disable 4996 遮蔽警告 構造回文 題目描述 給定乙個字串s,你可以從中刪除一些字元,使得剩下的串是乙個回文串。如何刪除才能使得回文串最長呢?輸出需要刪除的字元個數。思路 其實就是,原字串翻轉之後的字串跟原字串的最長公共子串行 那麼利用動態規劃的最長公共...