Cod sursa(job #651267)

Utilizator kinda_93kinda asfour kinda_93 Data 20 decembrie 2011 01:34:27
Problema Suma si numarul divizorilor Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include "stdio.h"
#include "malloc.h"
#include <iostream.h>
typedef unsigned int DWORD;
typedef unsigned char BYTE;

DWORD n,i,j,nr,sum,divizor,count,x,tmp;

ifstream in("ssnd.in");
ofstream out("ssnd.out");

BYTE v[1000010];

int main()
{
	for(i=2;i<1000010;i++)
	{
		if(v[i])
		{
			j = 2*i;
			while(j<1000010)
			{
				v[j] = 0;
				j+=i;
			}
		}
	}
	in>>n;
	for(i =0; i<n;i++)
	{
		fscanf(f,"%d",&x);		
		if(x ==1)
		{
			out<<"0 0\n";
			continue;
		}
		nr = 1;
		sum = 1;
		divizor = 2;
		while(x!=1)
		{
			while(!v[divizor])
				divizor++;
			tmp = x;
			count = 0;
			while(x%divizor == 0)
			{
				count++;
				x/=divizor;
			}
			nr*=count+1;
			sum*=((tmp/x)*divizor-1)/(divizor-1);
			divizor++;
		}
		out<<nr<<(sum%9973);
	}
	fclose(f);
	fclose(g);
	return 0;
}