Cod sursa(job #1519517)

Utilizator Belu99Bibo Bela Belu99 Data 7 noiembrie 2015 14:23:46
Problema Cifra Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 3.16 kb
#include <iostream>
#include <string.h>
#include <fstream>
using namespace std;
string N;
int T,x,y,i,n,j,s;
int suma(int x,int y)
{
    if(y%10==0)
        s=((y/10)*7)%10;
    else
    {
        x=y;
        while(x%10!=0)
            x--;
        s=((y/10)*7)%10;
        for(i=x;i<=y;i++)
            {
                if(i%10==1)
                    s=(s+1)%10;
                    else
                        if(i%10==2)
                            if(((i%100)/10)%2==1)
                                s=(s+6)%10;
                                else
                                    s=(s+4)%10;
                            else
                                if(i%10==3)
                                    if(((i%100)/10)%2==1)
                                        s=(s+3)%10;
                                        else
                                            s=(s+7)%10;
                                    else
                                        if(i%10==4)
                                            s=(s+6)%10;
                                    else
                                        if(i%10==5)
                                            s=(s+5)%10;
                                    else
                                        if(i%10==6)
                                            s=(s+6)%10;
                                    else
                                        if(i%10==7)
                                            if(((i%100)/10)%2==1)
                                                s=(s+7)%10;
                                                else
                                                    s=(s+3)%10;
                                            else
                                                if(i%10==8)
                                                    if(((i%100)/10)%2==1)
                                                        s=(s+4)%10;
                                                        else
                                                            s=(s+6)%10;
                                                    else
                                                        if(i%10==9)
                                                            s=(s+9)%10;

            }
    }
    return s;
}
int main()
{
    ifstream f("cifra.in");
    ofstream g("cifra.out");
    f>>T;
    for(j=0;j<=T;j++)
    {
        x=0;
        s=0;
        getline(f,N);
        n=N.size();
        if(n>5)
        {
        for(i=0;i<n;i+=2)
        {
            if(N[i]=='0')
                if(N[i+1]=='0')
                    y=x*10000;
                else
                    y=x*1000+(N[i+1]-'0');
            else
                if(N[i+1]=='0')
                    y=x*100+(N[i]-'0')*100;
                else
                    y=x*100+(N[i]-'0')*10+(N[i+1]-'0');
            s=(s+suma(x,y))%10;
            x=y%100;
        }
        }
        else
            {
                for(i=0;i<n;i++)
                    x=x*10+(N[i]-'0');
                s=suma(0,x);

            }
        if(s!=0)
        g<<s<<endl;
    }
    return 0;
}