C语言答案
不得不说这道题我统计次数的思路还是想了很久才想到的,对我这种初学者来说好难...

#include<stdio.h>
int main()
{
    int N,M,i,j,k;
    long long d[150];
    scanf("%d%d\n",&N,&M);//因为后面税金修改后数字会变得很大所以直接long long
    for ( i = 1; i <= N; i++)
    {
        scanf("%lld",&d[i]);
    }//最初N个城市所需的税金
    int a,b,c;
    for ( i = 0; i < M; i++)
    {
        scanf("%d%d%d",&a,&b,&c);
        if (a==1) 
        {
            for ( j = b; j <= c; j++)
            {
                d[j] = d[j]*251%996*404*123;
            }
        }//如果第一个数字是1,则对b到c编号的城市税金进行修改
        if (a==2)
        {
            int num = 1;
            for ( j = b; j <= c; j++)
            {
                int cnt = 1;//整个循环就是用第b个数与该范围内所有的数进行比较相同cnt++.
                //之后就是第b+1个数与该范围内所有的数比较...依此类推直到第c个数比较完毕
                for ( k = b+1; k <=c ; k++)
                {
                    if(k==j) continue;//因为cnt已经初始化为1了,所以统计相同的数时不能统计自己。
                    if (d[j]==d[k]) cnt++;
                }
                if (num < cnt) num = cnt;
            }
            printf("%d\n",num);
            //如果是2,则要答出相同税金金额出现的出现次数
        }
    }
    return 0;
}