其实就是当高精练习了
自行定义了数据类型gj,以后每次写高精可以照抄一波。
求各路大佬更好的高精写法!
就题目而言,没什么要点,按照定理算即可。
在具体实现上,为了偷懒不要写减法,就把-5p改成了+12p,反正影响不大。
```python
class gj():
def __init__(self):
self.num=[]
self.len=0
def str2gj(strin):
gj0=gj()
gj0.num=[int(i) for i in strin[::-1]]
gj0.len=len(strin)
return gj0
def num2gj(numin):
return gj.str2gj(str(numin))
def zero(self,zeronum):
zerogj=gj()
zerogj.num=self.num+zeronum*[0]
zerogj.len=self.len+zeronum
return zerogj
def delzero(self):
if self.len:
while self.num[-1]==0:
self.num.pop()
self.len-=1
if self.len==0:
break
def add(gj1,gj2):
x=max(gj1.len,gj2.len)+1
g1=gj1.zero(x-gj1.len)
g2=gj2.zero(x-gj2.len)
addiv=0
adsum=[]
for i in range(x):
addiv,admod=divmod(g1.num[i]+g2.num[i]+addiv,10)
adsum.append(admod)
adres=gj()
adres.num=adsum
adres.len=x
adres.delzero()
return adres
def _add(self,addgj):
adres=gj.add(self,addgj)
self.num=adres.num
self.len=adres.len
def gj2num(self):
value=0
star=1
for i in range(self.len):
value+=self.num[i]*star
star*=10
return value
def ctr(self):
p=self.num.pop(0)
self.len-=1
pgj=gj.num2gj(p*12)
self._add(pgj)
return self
def qu(x):
if len(x)>5:
x=gj.str2gj(x)
while x.len>5:
x.ctr()
x=x.gj2num()
else:
x=int(x)
return 1 if x%17==0 else 0
u=input()
while u!='0':
print(gj.qu(u))
u=input()
```
0.0分
1 人评分