20191019-求含8数字
2018奥赛初赛题(5)
题目:
从1到2018这2018个数中,共有 544 个包含数字8的数。含数字8的数是指某一位是“8”的数,例如“2018”与“188。”
解题思路:
A方案:
将这2018个数字分别变成字符串,然后在每个字符串中,用find()方法找"8"(即看这个数是否含有"8",找到一个就行)。
-
#include "stdafx.h"
-
#include "cstdio"
-
#include "string"
-
#include "cstring"
-
#include "iostream"
-
using namespace std;
-
string a="";
-
int main()
-
{
-
int count=0;
-
for(int i=1;i<=2018;i++)
-
{
-
a=to_string(i);
-
if(a.find("8")!=-1)//-1代表找不到
-
count+=1;
-
}
-
cout<<"共有"<<count<<"个"<<endl;
-
}
运行结果:
B方案:
取余,看是否余数是否是8。
-
#include "stdafx.h"
-
#include "cstdio"
-
int main()
-
{
-
int count=0;
-
for(int i=1;i<=2018;i++)
-
{
-
if(i%10==8 || i/10%10==8 || i/100%10==8)//个位数有8适用 i%10==8, 十位数有8适用 i/10%10==8 , 百位数有8适用 i/100%10==8
-
count+=1;
-
}
-
cout<<"共有"<<count<<"个"<<endl;
-
}
运行结果: