1 #include<stdio.h>
2 int main(void)
3 {
4 long long int redix, prenum, acumunum, r_redix, term, i, quotient, residue;
5 long long int j, termnum, rterm, rquotient, rresidue;
6
7 printf("Please input the number:");//不大于9223372036854775807
8 scanf("%lld", &prenum);
9 printf("\nPlease input the redix:");//应当介于1和10之间
10 scanf("%lld", &redix);
11 printf("\nPlease input the wanted redix:");//应当介于1和10之间
12 scanf("%lld", &r_redix);
13
14 if(redix!=10)//redix进制数转10进制数
15 {
16 const long int R=redix;
17 term=10;
18 residue=prenum%10;
19 quotient=prenum/10;
20 termnum=residue*term/10;
21 printf("\nT\tQ\tR\n");
22 printf("%lld\t%lld\t%lld\n", termnum, quotient, residue);//TEST
23 for(i=1;quotient>0;i++)
24 {
25 if(term>prenum)
26 break;
27 term*=R;
28 residue=quotient%10;
29 quotient/=10;
30 termnum=termnum+residue*term/10;
31 printf("%lld\t%lld\t%lld\n", termnum, quotient, residue);//TEST
32 }
33 }
34 printf("%lld\t%lld\t%lld\n\n", termnum, quotient, residue);//TEST
35
36 const long int RE=r_redix;//十进制整数转RE进制数
37 rterm=1;
38 rresidue=termnum%RE;
39 rquotient=termnum/RE;
40 acumunum=rresidue*rterm;
41 printf("%lld\t%lld\t%lld\n", acumunum, rquotient, rresidue);//TEST
42 for(i=1;rquotient>0;i++)
43 {
44 for(j=0,rterm=1;j<=i;j++)
45 rterm*=10;
46 rresidue=rquotient%RE;
47 rquotient/=RE;
48 acumunum+=rresidue*rterm/10;
49 printf("%lld\t%lld\t%lld\n", acumunum, rquotient, rresidue);//TEST
50 }
51
52 printf("\nThe number after transformation is:%lld\n", acumunum);
53
54 return 0;
55 }