2017浙工大院赛预赛 I 栗酱数数【water】

来源:互联网 发布:淘宝助理修改运费模板 编辑:程序博客网 时间:2024/04/30 04:39

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 131072K,其他语言262144K
64bit IO Format: %lld
题目描述
栗酱在酒桌上玩一个小游戏,第一个人从1开始数数,如果遇到数字中含4或者数字是4的倍数则跳过报下一个,谁数错了就要罚酒一杯。
所以栗酱想让你写个程序把所有数生成出来,这样她就可以作弊直接读了。你一定能解决的吧?
输入描述:
只有一组数据,一个数n代表从1开始数到n。(n≤100000)
输出描述:
按顺序输出所有1到n之间任何一位都不是4的数,每两个数之间用一个回车隔开。
示例1
输入

9
输出

1
2
3
5
6
7
9

#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>using namespace std;#define ll long long int#define INF 0x3f3f3f3fconst int maxn = 1e5 + 10;int a[maxn];int vis[maxn];void get_f(){    memset(vis, 0, sizeof vis);    for (int i = 0; i < maxn; i++)    {        if (i % 4 == 0)            vis[i] = 1;        int tmp = i;        while (tmp)        {            int k = tmp % 10;            tmp /= 10;            if (k == 4)            {                vis[i] = 1; break;            }        }    }}int main(){    get_f();    int n;    scanf("%d", &n);    for (int i = 1; i <= n; i++)    {        if (!vis[i])            cout << i << endl;    }    return 0;}