У меня есть t тестовых случаев. Учитывая два числа x и n, найдите число способов, которыми x может быть выражен как сумма n-й степени уникальных натуральных чисел.
Подход состоит в том, чтобы либо выбрать число, либо перейти к следующему. Ответвозвращенный хранится в массиве, так как я использую подход dp.
Это мой код
#include<bits/stdc++.h>
using namespace std;
int arr[101];
int func(int x,int n,int ind)
{
if(arr[x]!=-1)
{
return arr[x];
}
if(x==0)
{
return 1;
}
if(ind>=(sqrt(x)+1))
{
return 0;
}
if(x<0)
{
return 0;
}
//you can either take ind or just move to the next one
arr[x]=func(x-pow(ind,n),n,ind+1)+func(x,n,ind+1);
return arr[x];
}
int main()
{
int t;
cin>>t;
while(t)
{
int ans=0;
memset(arr,-1,sizeof(arr));
int x,n;
cin>>x>>n;
int ind=1;
ans=func(x,n,ind);
cout<<"printing the ans\n"<<ans;
t--;
}
return 0;
}
для ввода 1 10 2
Я получаю печать ANS-297160607, хотяответ 1