ipc3 - 银行 bank

银行 bank

Description

亿万光年外的艾泽拉斯大陆战事不断,被战火划分为了100000100000个领地,每个领地都有一个编号,分别为11到100000100000。在每个领地都有一个银行。商人工会在这100000100000个领地的银行开户时都存了33块大洋,为了保证工会资产的安全,工会将不时地派人手去清点存款或者改变存款。而艾泽拉斯大陆的求和运算相当于地球的乘法运算。即开户时存款总额其实为3^{100000}3100000。

​ 在艾泽拉斯大陆,货币面额有6060种,恰为最小的前6060个素数。所有人的存款都可以由这6060个面额表示。(所有的资产面额都只能由这60个基本面额表示,即设当前的资产为正整数M,则。M=p_1^{k_1}p_2 ^ {k_2}……p_{60}^{K_{60}}M=p1k1​​p2k2​​……p60K60​​。

​ 工会有时会派人手对第aa个领地的银行到第bb个领地的银行,即编号在[a,b][a,b]内的领地银行进行资产清点:先对这些资产做乘法运算,然后求解此结果的欧拉函数值。有时,工会也会拍人手到某个银行改变存款。现在请你对工会的每个清点操作求出区间内资产求积之后的欧拉函数值。

Input

第一行一个整数nn表示操作的总次数。

接下来nn行,每行3个整数ai,bi,ciai,bi,ci。

aiai为00时表示此次操作是清点,工会要求清点bibi到cici的存款,你需要对该操作求解出答案。

aiai为11时表示该操作是改变存款,把银行bibi的存款改为cici,不需输出结果。

Output

输出若干行,每行一个数,表示对应答案。

Sample Input 1 

6
0 1 3
1 1 5
0 1 3
1 1 7
0 1 3
0 2 3

Sample Output 1

18
24
36
6

Hint

x≤100000,当ai=0时0≤ci−bi≤100000x≤100000,当ai=0时0≤ci−bi≤100000

Reference Answer 

def main():
    N = int(input())
    bank = [3] * 10 ** 5
    for i in range(N):
        a, b, c = input().split(' ')
        a = int(a)
        b = int(b)
        c = int(c)
        if a == 0:
            ans = 1
            for i in range(b, c + 1):
                ans *= bank[i]
            print(Oula(ans))
        elif a == 1:
            bank[b] = c


def Oula(N):
    if (0).__class__ is N.__class__:
        if N > 0:
            F = 0
            for I in range(N):
                X, Y = N, I
                while Y != 0:
                    X, Y = Y, X % Y
                if X == 1:
                    F += 1
            return F


if __name__ == "__main__":
    main()

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值