Cod sursa(job #1969697)

Utilizator ioana.jianuIoana Jianu ioana.jianu Data 18 aprilie 2017 16:37:16
Problema Cifra Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.56 kb
#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;
int adun0[10]={0,1,4,7,6,5,6,3,6,9};
int adun1[10]={0,1,6,3,6,5,6,7,4,9};
char s[101];

/*int adunare(int i){
    if(i%10==0)
        return 0;
    if(i%10==1)
        return 1;
    if(i%10==2){
        if(i%4==2)
            return 4;
        else
            return 6;
    }
    if(i%10==3){
        if(i%4==1)
            return 3;
        else
            return 7;
    }
    if(i%10==4)
        return 6;
    if(i%10==5)
        return 5;
    if(i%10==6)
        return 6;
    if(i%10==7){
        if(i%4==1)
            return 7;
        else
            return 3;
    }
    if(i%10==8){
        if(i%4==0)
            return 6;
        else
            return 4;
    }
    if(i%10==9)
        return 9;
}
*/

int main(){

    FILE *fin,*fout;
    fin=fopen("cifra.in","r");
    fout=fopen("cifra.out","w");

    int t,rez,k,ind,n,i;

    fscanf(fin,"%d ",&t);

    for(k=1;k<=t;k++){
        fscanf(fin,"%s",s);
        n=strlen(s);
        ind=0;
        rez=0;
        if(n>1){
            rez=(7*(s[n-2]-'0'))%10;
            ind=(s[n-2]-'0')%2;
        }
        for(i=1;i<=s[n-1]-'0';i++){
            if(ind==0)
                rez=(rez+adun0[i])%10;
            else
                rez=(rez+adun1[i])%10;
        }
        fprintf(fout,"%d\n",rez);
    }

    /*rez=0;
    for(i=1;i<=123;i++)
        rez=(rez+adunare(i))%10;

        fprintf(fout,"%d",rez);
*/
    fclose(fin);
    fclose(fout);

    return 0;
}