Cod sursa(job #639515)

Utilizator vlcmodanModan Valentin vlcmodan Data 23 noiembrie 2011 13:52:36
Problema Suma si numarul divizorilor Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include<fstream>
#include<math.h>
#include<iostream>


int main()
{
	using namespace std;
	int a[100000],i,j,b[100000],n,max,u,k;
int s,nr,in,numar;
	ifstream f("ssnd.in");
	ofstream g("ssnd.out");
	f>>n;
	
	a[1]=2;
	u=1;
	b[1]=2;
	
	
	for(i=2;i<=50000;i++)
		b[i]=i*2-1;
	for(i=2;i<=50000;i++)
		if(b[i]!=0)
		{
			a[++u]=b[i];
			for(j=i+b[i];j<=max;j+=b[i])
			{
				b[j]=0;
			}
		}
		
		for(i=1;i<=n;i++)
		{
			f>>numar;
			s=1;
			nr=1;
			for(j=1;j<=sqrt(numar);j++)
			{
				if(numar%a[j]==0)
				{
					in=0;
					k=numar;
					do
					{
						k/=a[j];
						in++;
					}
					while(k%a[j]==0);
					s=s*((pow(a[j],in+1)-1)/(a[j]-1));
					nr*=(in+1);
					
					
				}
			}
			if(s==1&&nr==1)
			{
				nr=2;
				s=(numar*numar-1)/(numar-1);
			}
			s=s%9973;
			if(i<n)	
		g<<nr<<" "<<s<<"\n";
			else
				g<<nr<<" "<<s;
		
		}
		
				
	return 0;}