最新消息:

2018年北京小学生信息学科普日试题题解(下)

C++ 少儿编程 1311浏览 0评论

4

进制转换

2018年北京小学生信息学科普日试题题解(下)
问题描述

2018年北京小学生信息学科普日试题题解(下)

2018年北京小学生信息学科普日试题题解(下)

2018年北京小学生信息学科普日试题题解(下)

2018年北京小学生信息学科普日试题题解(下)
问题分析

1)将n进制数字转化成10进制数字。

方法:按位乘n的i次方后相加

(2)将10进制数字转化成m进制数字。

方法:反复除m取余数,除m的得数再取余数,直到得数为0,把余数按顺序从低位到高位写出即可

2018年北京小学生信息学科普日试题题解(下)
AC代码

2018年北京小学生信息学科普日试题题解(下)

5

同余问题

2018年北京小学生信息学科普日试题题解(下)
问题描述

2018年北京小学生信息学科普日试题题解(下)

2018年北京小学生信息学科普日试题题解(下)

2018年北京小学生信息学科普日试题题解(下)
问题分析
对于n位的十进制整数D,设它的数位从低位到高位分别为d0,d1…dn-1,则有: 

2018年北京小学生信息学科普日试题题解(下)

此时,利用乘法分配律,将D2拆分成多项式每一项分别相乘:
 

2018年北京小学生信息学科普日试题题解(下)

对于任意整数D,将后5位数留下,可以将其写成D=a*105+b的形式,其中b=Dmod105,即D的后5位。
那么有D2=(a*105+b)2=a2*1010+b2。此时a2*1010mod105=0,因此:D2的后5位仅与D后5位的平方有关。因此要想求D2的后5位,只需求出(Dmod1062即可。
于是当n≤5,以直接暴力求解.
否则,先暴力求出0到99999中所有平方后5位为54321的数的数量C,这样以105为周期,只要把所有n位数的数量除以105,再乘以C,就是所有n位数中平方后5位为54321的数量。
2018年北京小学生信息学科普日试题题解(下)
AC代码

2018年北京小学生信息学科普日试题题解(下)

转自公众号:
信息学少儿编程

您必须 登录 才能发表评论!