Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #define MAXN 151
- #define MAXS 1000001
- int SZ[MAXS];
- int ND[MAXS];
- int zbrojZnamenki( int n ){
- int zbr = 0;
- if(n<0){
- n *= -1;
- }
- while(n>0){
- zbr += n%10;
- n = n/10;
- }
- return zbr;
- }
- int racunajSz( int a, int b ){
- int i, sz = 0;
- for(i=a; i<=b; i++){
- SZ[i] = SZ[i] ? SZ[i] : zbrojZnamenki(i);
- sz += SZ[i];
- }
- return sz;
- }
- int brojDjelitelja( int n ){
- int i, br = 0;
- for( i=2; i*i<n; i++ ){
- if(n%i==0) br+=2;
- }
- if(i*i==n) br++;
- return br;
- }
- int racunajNd( int a, int b ){
- int i, nd = 0;
- for(i=a; i<=b; i++){
- ND[i] = ND[i] ? ND[i] : brojDjelitelja(i);
- nd += ND[i];
- }
- return nd;
- }
- void zamjeni( int *niz, int i, int j ){
- int tmp = niz[i];
- niz[i] = niz[j];
- niz[j] = tmp;
- }
- void sortNiz( int *niz, int n ){
- int i,j;
- for(i=0;i<n;i++){
- for(j=i+1;j<n;j++){
- if(niz[i] < niz[j]){
- zamjeni(niz,i,j);
- }
- }
- }
- }
- void ispisiNiz(int *niz, int n){
- int i;
- for(i=0; i<n; i++){
- if(i) printf(", ");
- printf("%d",niz[i]);
- }
- }
- int main( void ){
- int n, a, b;
- int sz, nd, rez[MAXN];
- int i, x, y;
- scanf("%d", &n);
- for(i=0; i<n; i++){
- scanf("%d%d", &x, &y);
- if(x<y){
- a = x; b = y;
- } else{
- a = y; b = x;
- }
- sz = racunajSz(a,b);
- nd = racunajNd(a,b);
- rez[i] = (nd==0 ? 0 : sz%nd);
- }
- sortNiz(rez, n);
- ispisiNiz(rez, n);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement