栗酱数数
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 131072K,其他语言262144K
64bit IO Format: %lld
空间限制: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
ACdaima
#include<iostream> #include<algorithm> #include<cstring> #include<cstdlib> using namespace std; int b[100005][8]; void join() { for(int i=1;i<=100000;++i) { if(i%4==0) { b[i][0]=1; continue; } else { int t=i; int j=6; while(t) { b[i][j]=t%10; t/=10; --j; } int ans=4; for(int k=6;k>=1;--k) { if(!b[i][0]&&b[i][k]==ans) { b[i][0]=1; break; } } } } } int main() { memset(b,0,sizeof(b)); join(); int n; while(cin>>n) { for(int i=1;i<=n;++i) { if(b[i][0]!=1) { cout<<i<<endl; } } } return 0; }
good luck~