but didn’t worked looks like I am using wrong libraries 😂🤣🤦♂️
using System;
using System.Collections.Generic;
using System.IO;using System.Linq;
class Solution {
static void Main(String[] args) {
/* Enter your code here. Read input from STDIN. Print output to STDOUT. Your class should be named Solution */
int total=int.Parse(Console.ReadLine());
for(int i=0;i<total;i++){
string str=Console.ReadLine();
int number=int.Parse(str.Split(‘ ‘)[0]);
int m=int.Parse(str.Split(‘ ‘)[1]);
Console.WriteLine(calculate(number)%m);
}
}
static Dictionary<int,long> buffer=new Dictionary<int,long>();
static Dictionary<int,int> buffer2=new Dictionary<int,int>();
static long calculate(int number){
return sigmat(number);
}
static int g(int n){
int i=0;
bool sum=false;
i=buffercheck2(n,ref sum);
if(sum){
return i;
}
int sfOutput=sf(i);
buffer2.Add(i,sfOutput);
while(sfOutput!=n){
i++;
sfOutput=sf(i);
buffer2.Add(i,sfOutput);
}
return i;
}
static long sigmat(int n){
long sum=0;
int buff=buffercheck(n,ref sum)+1;
for(int i=buff;i<=n;i++){
int sgval=sg(i);
sum+=sgval;
buffer.Add(i,sum);
}
return sum;
}
static int buffercheck(int n,ref long sum){
int max=0;
for(int i=0;i<buffer.Count;i++){
if(max<=buffer.ElementAt(i).Key && buffer.ElementAt(i).Key <=n ){
max=buffer.ElementAt(i).Key;
sum=buffer.ElementAt(i).Value;
if(max==n) {
return n;
}
}
}
return max;
}
static int buffercheck2(int n,ref bool sum){
int max=buffer2.Count;
for(int i=0;i<max;i++){
if(buffer2.ContainsValue(n)){
sum=true;
for(int j=0;j<buffer2.Count;j++)
{
if(buffer2[j]==n){
return j;
}
}
return 0;
}
}
return max-1;
}
static int sg(int n){
n=g(n);
int sum=0;
while(n>0){
sum+=n%10;
n=n/10;
}
return sum;
}
static int f(int n){
int sum=0;
while(n>0){
int sumA=n%10;
int factorial=1;
while(sumA>1){
factorial*=(sumA–);
}
sum+=factorial;
n=n/10;
}
return sum;
}
static int sf(int n){
n=f(n);
int sum=0;
while(n>0){
sum+=n%10;
n=n/10;
}
return sum;
}
}