当前位置: 代码迷 >> 综合 >> 拼多多笔试 飞行棋
  详细解决方案

拼多多笔试 飞行棋

热度:14   发布时间:2024-02-05 14:17:04.0

真正的夏天,从清晨7点就开始空气就变得燥热,窗外蝉在叫。多多躺在床上,直
勾勾地望着有些陌生的天花板,回忆着刚才的噩梦。
在梦里,多多- 个人在玩飞行棋,还剩一个棋子没到终点,距离终点还有K个格
子。之后多多投了N次骰子,多多清楚地记得每次投出的骰子点数是多少。但第
N次骰子投出之后多多就从梦中醒来,不记得最终自己棋子是否到达终点。现在
多多一 直在回想最终自己到达终点.....
输入描述: 
输入共2行。
第一行是2个整数K,N,分别表示棋子最终到终点的距离以及之后投掷的骰子次数。其中0<=K<=600,1<=N<=100。
第二行包含N个整数,其中第i (1 <= i<= N)个整数Di(1<=Di <= 6)表示第i次投出的骰子点数。
输出描述:
输出共1行,请注意行首、行尾不要输出多余的空格。
若在第N次骰子之前就已经到达终点,则输出字符串"paradox" 。
否则输出2个整数:最终棋子的位置(到终点的距离) , 以及共回退了多少次。
2个整数之间以单个空格隔开。
示例1 输入输出示例仅供调试,后台判题数据般不包含示例
输入
102
53
输出
复制
10
说明
2次共前进6+3=9格;
示例2输入输出示例仅供调试,后台判题数据一 般不包含示例
输入
复制
10 4
6333

#include<bits/stdc++.h>using namespace std;int main(){int m, n;cin>> m  >> n;vector<int> num(n);for(int i = 0; i< n;++i){int tmp;cin>> tmp;num[i] = tmp;}if(m == 0) {cout<< "paradox";return 0;}int cnt = 0;for(int i = 0;i < n; ++i){if(num[i] == m) {cout<< "paradox";return 0;}else if(num[i] < m){m = m - num[i];}else{m = num[i] - m;++cnt;}}if(m == 0) {cout<< "paradox";}else{cout<<m <<" "<<cnt;}return 0;
}

 

  相关解决方案