集训小记 5

来源:互联网 发布:如何开好淘宝直通车 编辑:程序博客网 时间:2024/06/05 02:46

  在记一道题

[提交][状态][论坛]

题目描述

输入一个十进制整数n,输出对应的二进制整数。常用的转换方法为“除2取余,倒序排列”。将一个十进制数除以2,得到余数和商,将得到的商再除以2,依次类推,直到商等于0为止,倒取除得的余数,即为所求的二进制数。例如,把52换算成二进制数:

52除以2得到的余数依次为0,0,1,0,1,1,倒序排列,得到52对应的二进制数110100。

用递归的思想来描述上述计算过程是这样的:输出n/2对应的二进制数,然后输入%2。递归函数的实现过程如下:

void convert(int n)

{

   if(n > 0)

   {

      调用自身,输出n/2对应的二进制数;

       输出n%2;

    }

}

试试吧!

输入

输入一个正整数n。

输出

输出n对应的二进制数。

样例输入

52

样例输出

110100

#include<stdio.h>
intmain()
{
    intn,i,a[100],j=0,r;
    scanf("%d",&n);
 
     for(;;)
    {
       r=n%2;
       j++;
       a[j]=r;
       n=n/2;
       if(n==0)
        break;
 
 
    }
    for(i=j;i>=1;i--)
        printf("%d",a[i]);
 
 
 
 
   return0;


******************************************************
*********************************************************
*******************************************************88
***************************************************************
for(; ;){
r=n%2;
       j++;
       a[j]=r;
       n=n/2;
       if(n==0)
        break;}
数字的分离模板

例如将89548
分为8 9 5 4 8

 *****************************
*****************************
************************888




再记个方法

 #include <stdio.h>
#include <stdlib.h>
int cmp(const void *a,const void *b)
{return *(int *)a-*(int *)b;}
int main()
{
   int i,n;
   while(scanf("%d",&n)!=EOF)
{   int a[10001];
    for(i=0;i<n;i++)
    scanf("%d",&a[i]);
    qsort(a,n,sizeof(a[0]),cmp);
    printf("%d\n",a[0]);
}


    return 0;
}

快排(快速排序 解决时间超限问题)


还不会用








0 0
原创粉丝点击