欧拉计划 problem 349 兰顿蚂蚁 飞神的蚂蚁

https://pe-cn.github.io/349/

在这里插入图片描述

百度百科
在这里插入图片描述

先进行模拟 得到20000之后的一步对应多少黑,找到合适的位置,可以通过加104到达1e18

#include <iostream>
#include <stdio.h>

using namespace std;

int main()
{
    int fang = 0;
    const int N = 10000;
    int i=5000,j=5000;
    int counter=0;
    long long int k = 0;
    int **a = new int* [N];
    for(int i=0;i<N;i++){
        a[i] = new int[N];
    }
    while(i< N && j< N && i>=0 && j>=0){
        //printf("%d %d\n",i,j);
        //printf("%d \n",a[i][j]);
        //printf("fang %d \n",fang);
        k++;
        if(a[i][j]%2==0){

            a[i][j]++;
            if(fang==0){
                j++;

            }else if(fang ==1){
                i++;
            }else if(fang ==2){
                j--;
            }else if(fang ==3){
                i--;
            }
            counter++;
            //printf("+1");
            fang++;
            fang %=4;
        }else{

            a[i][j]++;
            if(fang==0){
                j--;
            }else if(fang ==1){
                i--;
            }else if(fang ==2){
                j++;
            }else if(fang ==3){
                i++;
            }
            counter--;
            //printf("-1");
            fang--;
            fang =(fang+4)%4;
        }
        //if( k >= 20007){
            cout<<k<<" "<<counter<<endl;

       // }
    }

    return 0;
}

在这里插入图片描述

之后的规律就是 每隔104步增长12块黑,可以用计算器得到答案,直接输出就行

#include <iostream>
#include <stdio.h>

using namespace std;

int main()
{
    cout<<"115384615384614953"<<endl;
    return 0;
}

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 精致技术 设计师:CSDN官方博客 返回首页