Cod sursa(job #471912)

Utilizator vladtarniceruVlad Tarniceru vladtarniceru Data 21 iulie 2010 18:48:22
Problema Ratphu Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.59 kb
#include<fstream.h>
 ifstream f("ratphu.in");
  ofstream g("ratphu.out");
    int n,k=0,i,p,i1,i2,i3,i4,ca,dca,b1;
	long long rez=0,nrf;
    char cif[20],cit,a[400000][21];
    int main(){
		while(cit!=' '){
			cit=f.get();
			if(cit!=' ')
				cif[++k]=cit;
		}
		f>>p;
		//g<<k;
		for(i1=1;i1<=k;++i1){//mergi prin toate cifrele
			if(i1!=k){//daca nu e nr de cifre care te intereseaza
				dca=ca;
				for(i2=1;i2<=dca;++i2){//treci prin toate pentru a forma cu i1 cifre
					b1=0;
					for(i3=1;b1<=1/*a[i2][i3]!='\0'*/;++i3){//i3 e pozitia unde o sa pui cifra noua
						++ca;
						if(b1==0){
	    					for(i4=1;i4<i3;++i4) a[ca][i4]=a[i2][i4];//pui cifrele dinainte
		    				a[ca][i3]=cif[i1];//pui cifra care treb adaugata
			    			for(i4=i3;a[i2][i4]!='\0';++i4) a[ca][i4+1]=a[i2][i4];//le pui pe cele de dupa
						}
						if(a[i2][i3]=='\0') ++b1;
					}
				}
				a[++ca][1]=cif[i1];
			}
			else{
				dca=ca;
				for(i2=1;i2<=dca;++i2){//treci prin toate pentru a forma cu i1 cifre
					for(i3=1;a[i2][i3]!='\0';++i3){//i3 e pozitia unde o sa pui cifra noua
						nrf=0;
						for(i4=1;i4<i3;++i4) nrf=nrf*10+(a[i2][i4]-'0');
						//for(i4=1;i4<i3;++i4) a[ca][i4]=a[i2][i4];//pui cifrele dinainte
						nrf=nrf*10+(cif[i1]-'0');
						//a[ca][i3]=cif[i1];//pui cifra care treb adaugata
						for(i4=i3;a[i2][i4]!='\0';++i4) nrf=nrf*10+(a[i2][i4]-'0');
						//for(i4=i3;a[i2][i4]!='\0';++i4) a[ca][i4+1]=a[i2][i4];//le pui pe cele de dupa
						//verifici daca e div cu p
						if(nrf%p==0) ++rez;
					}
				}
			}
		}
		g<<rez+1<<'\n';
		g.close();
		return 0;
	}