-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathThCineseResti.c
59 lines (45 loc) · 1.24 KB
/
ThCineseResti.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include<stdio.h>
int main(){
int n;
printf("Le congruenze sono del tipo: x= 'r' mod 'm'\n\n");
printf("Inserisci il numero di congruenze del tuo sistema: ");
scanf("%d", &n);
int r[n], m[n];
for( int i=0; i<n; ++i){
printf("Inserisci il 'r' numero %d: ", i+1);
scanf("%d", &r[i]);
printf("Inserisci l' 'm' numero %d: ", i+1);
scanf("%d", &m[i]);
}
int N=1;
for( int i=0; i<n; ++i){
N *= m[i]; }
printf("N= %d\n", N);
int nexc[n], x[n], y[n];
for( int i=0; i<n; ++i){
nexc[i]= N/m[i];
x[i]= nexc[i]/m[i];
x[i]=m[i]*x[i];
x[i]=nexc[i]-x[i];
printf("x[%d]= %d\n", i+1, x[i]);
for(int j=1; j<m[i]; ++j)
if( ( (j*x[i])%m[i] )==1 ){ y[i]=j; break; }
//printf(" y[%d]= %d\n", i+1, y[i]);
}
for( int i=0; i<n; ++i) printf("N[%d]= %d\t", i+1, nexc[i]);
printf("\n");
for( int i=0; i<n; ++i) printf("y[%d]= %d \t", i+1, y[i]);
printf("\n");
for( int i=0; i<n; ++i) printf("r[%d]= %d \t", i+1, r[i]);
printf("\n");
int mult[n];
for( int i=0; i<n; ++i){ mult[i]=nexc[i]*y[i]*r[i]; printf("mult[%d]= %d \t", i+1, mult[i]); }
int sum=0;
for( int i=0; i<n; ++i) sum+=mult[i];
printf("\nsum= %d \n",sum);
int c;
c=sum/N;
c=c*N;
c=sum-c;
printf("\nSoluzione: x= %d mod %d\n\n", c, N);
}