魔力手环
来源:互联网 发布:java中适配器作用 编辑:程序博客网 时间:2024/06/02 12:20
小易拥有一个拥有魔力的手环上面有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
过了50%的数据的代码,内存超了,据说要用矩阵快速幂做才行
#include"iostream"#include<map>using namespace std;int main(){ int n,k; int ai[60]; int bi[60]; cin>>n>>k; map<string,int> jj; for(int i=0;i<n;i++) { cin>>ai[i]; bi[i]=ai[i]; } int xun; int qi; int it; for(it=1;it<=k;it++) { string biaoji; for(int i=0;i<n;i++) { int a=bi[i]; while(a) { int ge=a%10; a=a/10; char b=ge+'0'; biaoji+=b; } //biaoji+='-'; } if(!jj[biaoji]) { jj[biaoji]=it; } else { qi=jj[biaoji]; xun=it-jj[biaoji]; break; } int beg=bi[0]; for(int i=0;i<n-1;i++) { bi[i]+=bi[i+1]; bi[i]%=100; } bi[n-1]=(bi[n-1]+beg)%100; } int wei=k; if(it<k) { wei=(k-qi)%xun+qi; } cout<<xun+qi<<endl; while(wei--) { int beg=ai[0]; for(int i=0;i<n-1;i++) { ai[i]+=ai[i+1]; ai[i]%=100; } ai[n-1]=(ai[n-1]+beg)%100; } for(int i=0;i<n-1;i++) cout<<ai[i]<<" "; cout<<ai[n-1]<<endl; return 0;}
题解网址:https://www.nowcoder.com/discuss/22696?type=0&order=0&pos=8&page=1
0 0
- 魔力手环
- 魔力手环
- 魔力手环
- 魔力手环
- 算法题目-魔力手环
- 网易编程:魔力手环
- [编程题] 魔力手环
- [编程题] 魔力手环
- 2017 网易 [编程题] 魔力手环
- 魔力手环 矩阵快速幂
- 网易之使用k次魔力之后魔力手环的状态
- 网易2017实习生笔试编程题-魔力手环
- 魔力手环-网易互联网2017在线笔试题目
- 网易2017春招 魔力手环 矩阵快速幂
- 网易互联网2017在线笔试题目-魔力手环
- 矩阵快速幂的应用题 -- 魔力手环
- 魔力手环(网易2017春招笔试题)
- [网易2017实习生编程题] 魔力手环
- TreeSet
- Leetcode Algorithm 032. Longest Valid Parentheses
- echarts 地图外边框
- 使用docker构建jenkins镜像并运行容器
- Tab选项卡点击 滑动效果js实现
- 魔力手环
- Adam:一种随机优化方法
- ora-00911: 无效字符 --使用jdbc查询数据库数据时控制台报错
- strlen、strcat、strcmp、strcpy函数实现
- Xcode
- HashMap
- 使用Ionic3 新特性Lazy Loading加速应用
- nutz dao类
- Declaration of developing a column with respect to Deep Learning