zoukankan      html  css  js  c++  java
  • 2013.3.6 SDUT 2013春季ACM集训_12级周赛2 A题 ZOJ 2965

    思路:一开始想用链表做,但是想象了一下还是放弃,链表实现起来有些麻烦,然后想用数组,可是在写的过程中发现根本用不着,挺简单一题。用了一个标记变量和一个用来计数的变量就OK了。

     1 #include<stdio.h>
     2 #include<string.h>
     3 #include<stdlib.h>
     4 int a[10000001];
     5 int main()
     6 {
     7     int n,i,j,p,l,count,t,flag;
     8     while(scanf("%d",&n)!=EOF)
     9     {
    10         while(n--)
    11         {
    12             scanf("%d",&p);
    13             count=0;flag=0;
    14             for(i=1; ;i++)
    15             {
    16                 if(i%7==0)
    17                   flag=1;
    18                 else
    19                 {
    20                     t=i;j=0;
    21                    while(t)
    22                    {
    23                      a[j++]=t%10;
    24                      t=t/10;
    25                    }
    26                    for(l=0;l<j;l++)
    27                    {
    28                        if(a[l]==7)
    29                            flag=1;
    30                    }
    31                 }
    32                 if(flag==1)
    33                 {
    34                     count++;
    35                     if(count==p)
    36                        {printf("%d\n",i-p+1);break;}
    37                     else
    38                        flag=0;
    39                 }
    40                 else  {count=0;flag=0;}
    41             }
    42         }
    43     }
    44     return 0;
    45 }

    做完后和同学讨论,好像有个同学用的搜索。。。。呜呜呜,我不懂这么深奥的东东。。。

    这是他的代码。。留待以后研究。。。

     1 #include <stdio.h>
     2 #include <string.h>
     3 
     4 #define MAXN 1000
     5 
     6 int q[MAXN], top;
     7 
     8 int main(){
     9     int T, n, i, t, flag, cnt, j;
    10     top = 0;
    11     for(i=1; i<=MAXN; i++){
    12         if(i % 7 == 0) q[top++] = i;
    13         else{
    14             flag = 0;
    15             t = i;
    16             while(t){
    17                 if(t % 10 == 7) {flag = 1; break;}
    18                 t /= 10;
    19             }
    20             if(flag) q[top++] = i;
    21         }
    22     }
    23 
    24     scanf("%d", &T);
    25     while(T--){
    26         scanf("%d", &n);
    27         for(i=0; i<top; i++){
    28             cnt = 1;
    29             for(j=i+1; j<top; j++){
    30                 if(cnt == n) break;
    31                 if(q[j] == q[j-1]+1) cnt++;
    32                 else{cnt = 1; break;}
    33             }
    34             if(cnt == n) break;
    35         }
    36         printf("%d\n", q[i]);
    37 
    38     }
    39     return 0;
    40 }
  • 相关阅读:
    C# 杨辉三角 下
    C# 自动走迷宫 下
    算法练习之1数字填充 下
    动态添加控件并获取其值
    两个ListBox的互动
    VS2005常用快捷键
    GridView内嵌DropDownList操作
    GridView格式化短日期
    获得客户端ID
    Access数据库 Update 语句的怪现象
  • 原文地址:https://www.cnblogs.com/mafangfang/p/2963670.html
Copyright © 2011-2022 走看看