11347

#include <iostream>
#include <cstring>
#include <math.h>
#include <stdio.h>
#include <vector>

#define ull  unsigned long long
#define max(a,b) a>=b?a:b

using namespace std;

int ans[200];
int prime[1001];
vector<int> v;
ull _MAX;

void primegenerator()
{
	double p=sqrt(1001);

	v.push_back(2);

	for(int i=3;i<p;i+=2)
	{
		if(prime[i]==0)
		for(int j=i*2;j<1001;j+=i)
			prime[j]=1;
	}

	for(int i=3;i<1001;i+=2)
	{
		if(prime[i]==0)
		v.push_back(i);
	}

}

int main()
{
	string s;
	int _max=0;
	int t,cnt,num;
	int kase=1;
	_MAX = 1000000000;
	_MAX *=_MAX;
	primegenerator();
	cout<<v.size()<<"\n";
	cin>>t;

	while(t--)
	{
		cin>>s;
		cnt=0;
		num=0;
		_max=0;
		memset(ans,0,sizeof(ans));
		for(int i=0;i<s.size();i++)
		{
			if(s[i]=='!')
			cnt++;
			else
			{
				num*=10;
				num+=(s[i]-'0');
			}
		}
		//cout<<num<<" "<<cnt<<"\n";
		cout<<"Case "<<kase++<<": ";

		while(num>1)
		{
			int tmp=num;
			int j=0;
			while(tmp>1)
			{
				if(tmp%v[j]==0)
				{
					tmp/=v[j];
					ans[j]++;
					//_max=max(j,_max);

				}
				else
				j++;
			}
			num-=cnt;
		}

		ull res=1;
		int f=1;
		for(int i=0;i<v.size();i++)
		{
			if(ans[i]!=0)
			res*=(ans[i]+1);
			if(res>_MAX)
			{
				f=0;
				break;
			}
		}
		if(f==1)
		cout<<res<<"\n";
		else
		cout<<"Infinity\n";
	}
	return 0;
}

 

Leave a Reply

Your email address will not be published. Required fields are marked *