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; }