搜索
查看: 1045|回复: 8
打印 上一主题 下一主题

1~999有多少个数该怎么写?

[复制链接]
跳转到指定楼层
楼主
发表于 2014-2-20 20:23:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
10啊哈币
有一个123 456 789 ~997 998 999 是由1~999整数排列的一个数,它的第2013位数是什么?· 该怎么写?

最佳答案

查看完整内容

非要编程大概可以这么写吧
沙发
发表于 2014-2-20 20:23:10 | 只看该作者
非要编程大概可以这么写吧
  1. #include <stdio.h>

  2. int main()
  3. {
  4.   int num = 1;
  5.   int digit_num = 0;
  6.   int digit = 0;
  7.   while(1){
  8.     if(num < 10){
  9.       digit_num += 1;
  10.       num += 1;
  11.       continue;
  12.     }
  13.     if(num < 100){
  14.       digit_num += 2;
  15.       num += 1;
  16.       continue;
  17.     }
  18.     if(digit_num + 3 < 2013){
  19.       digit_num += 3;
  20.       num += 1;
  21.       continue;
  22.     }
  23.    
  24.     if(digit_num + 3 == 2013){
  25.       digit = num % 10;
  26.       break;
  27.     }
  28.     if(digit_num + 3 == 2014){
  29.       digit = num % 100 / 10;
  30.       break;
  31.     }
  32.     digit = num / 100;
  33.     break;
  34.   }
  35.   printf("%d\n", digit);
  36.   return 0;
  37. }
复制代码
板凳
发表于 2014-2-20 21:22:27 | 只看该作者
这个难度不值得去编程吧
1位数9个
2位数90个
2013 - 9 - 90 x 2 = 1824
1824 = 3 x 608
所以就是第608个3位数的第三位,也就是707的第三位,就是7
地板
发表于 2014-2-23 15:14:10 | 只看该作者
#include <stdio.h>

int main()
{
  int num = 1;
  int digit_num = 0;
  int digit = 0;
  while(1){
    if(num < 10){
      digit_num += 1;
      num += 1;
      continue;
    }
    if(num < 100){
      digit_num += 2;
      num += 1;
      continue;
    }
    if(digit_num + 3 < 2013){
      digit_num += 3;
      num += 1;
      continue;
    }
   
    if(digit_num + 3 == 2013){
      digit = num % 10;
      break;
    }
    if(digit_num + 3 == 2014){
      digit = num % 100 / 10;
      break;
    }
    digit = num / 100;
    break;
  }
  printf("%d\n", digit);
  return 0;
}
5#
发表于 2014-2-24 12:10:37 | 只看该作者
rosynirvana 发表于 2014-2-20 21:22
这个难度不值得去编程吧
1位数9个
2位数90个

不明觉厉,慢慢想
6#
发表于 2014-2-26 21:14:45 | 只看该作者
#include<stdio.h>
#define N 2013
int main()
{
int a[3]={9,200,3000};
int i,j,x,sum,m,n;

sum=N;
for(i=0;i<3;i++)
{
sum-=a[i];
if(sum<=0)
break;
}

sum+=a[i];

x=a[i];
for(j=0;j<=i;j++)
{x/=10;}


m=sum/x;
n=sum%x;


switch(n)
{
case 0:printf("%d",(m-1)%100);break;
case 1:printf("%d",(m-1)/100);break;
case 2:printf("%d",(m-1)/10%10);break;
}
getch();
}
7#
发表于 2014-2-26 21:15:50 | 只看该作者
rosynirvana 发表于 2014-2-20 21:22
这个难度不值得去编程吧
1位数9个
2位数90个

两位数是10~99有100个哟~
8#
发表于 2014-2-26 21:49:59 | 只看该作者
cldelyn 发表于 2014-2-26 21:15
两位数是10~99有100个哟~

1到99多少个数?
然后1到9多少个?

99 - 9 = 90
9#
发表于 2014-3-6 13:30:01 | 只看该作者
本帖最后由 风流种 于 2014-3-6 13:32 编辑

#include <stdio.h>
int main(void)
{

        int iNum=1;
        int iNumdigtal=0;
    int iDigtal=0;
    while(1)
        {
        if(iNum<10);
        {
                iNumdigtal+=1;
                iNum+=1;
            continue;
        }
       
        if(iNum<100)
        {
                        iNumdigtal+=2;
                        iNum+=1;
                    continue;
       
        }
       
        if(iNumdigtal+3<2013)
        {
                iNum+=1;
            iNumdigtal+=3;
            continue;
        }
       
                if(iNumdigtal+3==2013)
       
        {
                iDigtal=iNum%10;
             break;
        }
       
        if(iNumdigtal+3==2014)
        {
                iDigtal=iNum%100/10;
                   break;
       
        }
       
         
        iDigtal=iNum/100;
        break;
        }
             
                }

        printf("2013个数是%d\n",iDigtal);
        return 0;
}
帮我看看我这样的编程到底错在哪里,总是编译不过去
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表