问题标题: 酷町堂:4354 机器人行走

0
0
已解决
荣光峰
荣光峰
资深光能
资深光能

为什么超时啊!

60分代码:

#include <bits/stdc++.h>
#include <iostream>
#include <cstdio>
#include <string>
#include <algorithm>
#include <cmath>
#include <cstdio>
#include <iomanip>
using namespace std;
int main(){ 
    string n;
    cin>>n;
    long long int;
    cin>>t;
    long long int x=0,y=0;
    for(int i=0;i<=t-1;i++){
        if(i==n.size()){
            n+=n;
        }
        if(n[i]=='E'){
            x++;
        }
        if(n[i]=='S'){
            y--;
        }
        if(n[i]=='W'){
            x--;
        }
        if(n[i]=='N'){
            y++;
        } 
    }
    cout<<x<<" "<<y;
    return 0;
}

有什么办法不超时吗?


0
已采纳
蒋文瀚
蒋文瀚
新手光能
新手光能

用周期,先算出一个周期行走的步数;再将  一个周期行走的步数*周期数;最后加上一个周期剩余的步数

~~~完美

求采纳

0
黄依成
黄依成
中级天翼
中级天翼

T<=2000000000当然超了

黄依成在2020-10-05 11:11:00追加了内容

用周期,先循环一次命令串长度l,坐标变一下,再循环t模l次,同样算坐标

0
0
徐媛一
徐媛一
修练者
修练者

用到了周期问题,并兼模拟,如果只用for循环或while循环,e,不说了,自己看  <数据范围及提示 Data Size & Hint>:对于100%的数据:T<=2000000000 肯定会超时鸭

0
0
我要回答