本文介绍了一个乘以2的数字给出了它的排列,我的代码没有给出任何这样的排列。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

#include<stdio.h>
#include<math.h>
int numdig(int x)
{
    int i=0;
    for(i=0;i<100;i++)
    {
        x=x/10;
        if(x==0)
            break;
    }
return (i+1);
}
void sort(int a[],int n)
{
    int i=0,j,temp;
    for(i=0;i<n;i++)
    {
        for(j=i+1;j<n;j++)
        {
            if(a[i]>a[j])
            {
               temp=a[i];
                a[i]=a[j];
                a[j]=temp;
            }
        }
    }
}
int numcheck(int x)
{   int count=0;
    int i=0,j,y;
    int a[50],b[50];
    for(i=0;i<50;i++)
    {
        a[i]=x%10;
        x=x/10;
        if(x==0) break;
    }
    j=i; y=2*x;
     for(i=0;i<50;i++)
    {
        b[i]=y%10;
        y=y/10;
    }
    sort(a,j+1);sort(b,j+1);
    for(i=0;i<j;i++)
    {
        if(a[i]==b[i]) count++;
    }
    if(count==j+1) return 1;
    else return 0;
}
int main()
{
  long long int a,b,i; int t,k;
    printf("enter the number of cases\n");
    scanf("%d",&t);

    for(k=0;k<t;k++)
    {
printf("enter the number which are upper bound and lower bound\n");

    scanf("%d",&a);
    scanf("%d",&b);
    for(i=a;i<b;i++)
    {
        if(numdig(i)!=numdig(2i))
            break;
        else if (numcheck(i)==1)
        printf("this is one of the required number : %d",i);
        else continue;
    }
    }
    return 0;

}

推荐答案


found 125874 (251748)



作为第一个这样的数字。




as first of such numbers.

#include<stdio.h>

void sort(int a[],int n)
{
  int i, j, temp;

  for(i=0;i<n-1;i++)
  {
    for(j=i+1;j<n;j++)
    {
      if ( a[i] > a[j] )
      {
        temp = a[i];
        a[i] = a[j];
        a[j]=temp;
      }
    }
  }
}

int make_array(int x, int a[], int size)
{
  int i;

  for (i = 0; i < size; ++i)
  {
    a[i] = x % 10;
    x /= 10;
    if ( x == 0 ) break;
  }
  return (i +1);
}

int numcheck(int x)
{
  int i;
  int sa, sa2;
  int a[50], a2[50];

  sa  =  make_array( x, a, 50);
  sa2 =  make_array( x * 2, a2, 50);
  if ( sa != sa2) return 0;

  sort( a, sa);
  sort( a2, sa);

  for(i=0; i<sa; i++)
  {
    if ( a[i] != a2[i] ) break;
  }
  if (i != sa) return 0;
  return 1;
}

int main()
{
  int a,b,i; int t,k;
  printf("enter the number of cases\n");
  scanf("%d",&t);

  for(k=0;k<t;k++)
  {
    printf("enter the number which are upper bound and lower bound\n");

    scanf("%d",&a);
    scanf("%d",&b);
    for(i=a;i<b;i++)
    {
      if ( numcheck( i ) == 1)  printf("found %d (%d) \n", i, 2*i);
    }
  }
  return 0;
}


这篇关于一个乘以2的数字给出了它的排列,我的代码没有给出任何这样的排列。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-27 13:35