zoukankan      html  css  js  c++  java
  • Algorithm Design Everyday——1.魔女数字7

    题目描述:

       嘿嘿,这个关于 7 的题目这次算是第三次了。这个 7 可谓是最厉害的,呵呵。 首先,如果这个数要在 1 - 1 000 000之间, 并且能够被 7 整除或者用 10 进制表示的时候包含数字 7, 那么这个数就叫做魔女の数。

    输入:

      有多个测试点,每个测试点一行,只有两个整数 a 和 b, 你需要计数出 a 和 b 之间(包含 a 和 b)一共有多少个 魔女の数。不过如果 a 与 b 其中有一个不在魔女の数 的范围内的话,应该输出 Overflow。

    输出:

      对每个测试点输出对应的魔女の数的数目, 一个结果一行,按样例格式输出。

    样例输入:

    1 10

    7 17

    0 9

    样例输出:

    有 1 个魔女の数

    有 3 个魔女の数

    题目要点:

    (1)注意各种各样的输入格式(空格,回车,负号,0),才能提取出head以及tail;

    (2)求出[a,b]之间的所有跟7有关(一是模7为0,而是数字本身包含7)的数字个数。

    参考代码:

      1 #include<iostream>
      2 using namespace std;
      3 
      4 char input;
      5 
      6 void function(char first, int *head, int *tail)
      7 {
      8     if(first == '-')//判断开头没有没有负号,有的话直接输出overflow
      9     {
     10         *head = 0;
     11         return ;
     12     }
     13 
     14     if((first == '
    ' ) || (first == ' ') || first == '0')//判断字符开头是不是无关字符
     15         return ;
     16 
     17     input = first;
     18 
     19     *head = 0;
     20     while((input != ' ') && (input != '
    '))//找出head
     21     {
     22         *head = (*head) * 10 + input - '0';
     23         if(*head > 1000000)//显然head > 1000000直接返回
     24         {
     25             while((input = getchar()) && input != '
    ')//找到整个输入串的末尾
     26                 ;
     27             return ;
     28         }
     29 
     30         input = getchar();
     31     }
     32 
     33     while(input==' ') //吞掉head与tail之间的空格
     34         input=getchar();             
     35 
     36     int check = 0;//判断tail的第一个元素是不是0
     37     while(input!='
    ') //找出tail                                   
     38     {                                               
     39         if(input=='-') 
     40             return;
     41         else if(input=='0' && check==0)
     42             ;       
     43         else if(input==' ')                             
     44         {                                                   
     45             while((input=getchar()) && input!='
    ')
     46                 ;    
     47             return;
     48         }
     49         else
     50         {
     51             *tail=(*tail)*10+input-'0';
     52             check=1; 
     53             if(*tail>1000000)
     54             {
     55                 while((input=getchar()) && input!='
    ')
     56                     ;
     57                 return;
     58             }
     59         }
     60         input=getchar();
     61     }
     62     return;
     63 }
     64 
     65 void judge(int head, int tail)     //没 overflow 的情况下判断 head tail 之间的魔女数
     66 {
     67     int temp=0, copy;
     68     for(; head <= tail ; head ++)
     69     {
     70         if(head % 7 == 0) //模7为0,则跳出
     71             temp ++;
     72         else 
     73         {
     74             copy = head;
     75             while(copy > 0)
     76             {
     77                 if((copy - (copy / 10) * 10) == 7)//包含7就++,然后跳出
     78                 {
     79                     temp++;
     80                     break;
     81                 }
     82                 else 
     83                     copy /= 10;
     84             } 
     85         }
     86     }
     87     printf("有%d 个魔女の数
    ", temp);
     88 }
     89 
     90 int main()
     91 {
     92     char first;
     93     int head, tail;
     94 
     95     while((first = getchar()) && first != EOF)
     96     {
     97         head = -1;
     98         tail = 0;
     99 
    100         function(first, &head, &tail);//找出head以及tail
    101 
    102         if(head == -1)
    103             continue;
    104         else if((head > 0 && head <= 1000000) && (tail > 0 && tail <= 1000000))
    105         {
    106             if(head <= tail)
    107                 judge(head, tail);
    108             else
    109                 judge(tail, head);
    110         }
    111         else
    112         {
    113             printf("Overflow
    ");
    114             while(input != '
    ')
    115                 input = getchar();
    116         }
    117     }
    118 
    119     return 0;
    120 }
  • 相关阅读:
    设置maven阿里云镜像和公司私服并存
    idea favorites bookmarks标签收藏夹数据丢失bug
    C#后期绑定调用COM组件
    SQL Studio 1.0:一款轻便的SQL脚本工具兼容SQL Server、MySQL、Access2007
    SQL Studio 2.0: 新版发布
    SQLHelper用的不爽,试试CmdRunner吧
    Flask + uWSGI+ Linux 指南及避坑
    Flask + Pyinstaller 打包后运行报错 SystemError
    Url重写之UrlRewriter
    .net5 提取压缩包内指定文件内容无需解压
  • 原文地址:https://www.cnblogs.com/yiyi-xuechen/p/3452277.html
Copyright © 2011-2022 走看看