UESTC 方老师开橙卡

方老师开橙卡

Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others)
 

方老师最近迷上了炉石传说,但是他总是被土豪吊打。

方老师是万能的,他知道如何能开出橙卡:

方老师有一个幸运数字 n ,他开卡包的时候总会在屏幕上划出一个五芒星,假设方老师划出了 m 次五芒星,那么当 (m2)%(10x)=n(x=0,1,2,3) ,对于某个 x 成立时,就会开出橙卡,请问方老师最少需要划出几次五芒星?如果方老师不可能开出橙卡,请告诉他。

Input

第一行有一个整数 T(T3000) ,代表测试数据的组数。

对于每组数据,每行有一个整数 N(0N109)

Output

对于每一组数据,如果 m 存在,输出 m ,否则输出None

Sample input and output

Sample Input Sample Output
3
3
21
25
None
11
5

Hint

(m2)%(10x)=n(x=0,1,2,3)  只要有一个 x 满足就成立了

每次枚举一位数,从1位数字到9位数字,满足条件则加入队列。比如21,首先1*1 = 1 和 9*9 = 81 都满足个位与21的个位相同,加入队列,下次就考虑匹配第二位,然后第三位,。。

#include <iostream>
#include <stdio.h>
#include <string.h>
#include <queue>
#include <math.h>
using namespace std;
int n;
struct node
{
    long long m;
    int x;
    bool operator<(const node &t)const  //依次从小的数开始,大的数肯定不行
    {
        return t.m<m;
    }
};
long long bfs()
{
    priority_queue<node>q;
    node h,t;
    h.m=0;
    h.x=0;
    q.push(h);
    while (!q.empty())
    {
        t=q.top();
        q.pop();
        long long temp=(long long)pow(10,t.x);
        if(t.m*t.m%temp==n)
        {
            return t.m;
        }
        for (int i=0; i<=9; i++)
        {
            h.m=t.m+i*temp; //t.m为已经从个位匹配的数字,i*temp为枚举下一个高位数字
            h.x=t.x+1;
            if(h.m*h.m%(temp*10)==n%(temp*10)) //测试这个高位是否符合条件
            {
                q.push(h);
            }
        }
    }
    return -1;
}
int main()
{
    int t;
    scanf("%d",&t);
    while (t--)
    {
        scanf("%d",&n);
        long long x=bfs();
        if(x==-1)
        {
            printf("None\n");
        }
        else
        {
            printf("%lld\n",x);
        }
    }
    return 0;
}





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
互联网络程序设计是指在互联网上进行程序开发和设计的过程。UESTC则是我国的一所著名高校——电子科技大学。 互联网络程序设计 uestc包含了两个主要的面:互联网络和程序设计。互联网络是指将多个计算机网络通过通信链路互相连接起来,实现信息共享和资源共享的网络系统。程序设计是指根据需求和目标,通过编写代码和设计算法,实现计算机程序的过程。 互联网络程序设计 uestc的学习内容主要包括以下几个面: 1. 网络知识:学习互联网络的基本概念、原理和协议,如TCP/IP协议、HTTP协议等。掌握网络编程的基本技术,能够编写网络应用程序。 2. 数据通信:学习数据通信的基本原理和技术,包括数据传输的式、数据压缩和加密等。了解网络安全和数据保护的基本知识。 3. 程序设计:学习编程语言和开发工具,如Java、C++和Python等。掌握常用的编程技巧和法,能够设计和实现复杂的网络应用程序。 4. Web开发:学习Web开发的基本知识和技术,包括HTML、CSS、JavaScript等。能够设计和实现交互式的Web应用程序。 5. 数据库技术:学习数据库的基本原理和技术,如SQL语言和数据库管理系统。能够设计和管理数据库,实现数据的存储和检索。 通过学习互联网络程序设计 uestc,可以掌握互联网应用开发的基本技能,具备设计和实现网络应用程序的能力。这对于目前互联网行业的人才需求来说是非常重要的,也为学生提供了广阔的就业和创业机会。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值