华为OJ——(练习用)挑7

时间:2022-03-16 11:27:58

(练习用)挑7

题目描述

输出7有关数字的个数,包括7的倍数,还有包含7的数字(如172737...70717273...)的个数

输入描述:

一个正整数N(N不大于30000)

输出描述:

不大于N的与7有关的数字个数,例如输入20,与7有关的数字包括7,14,17.

输入例子:

20

输出例子:

3

解答代码:

#include<iostream>
#include<cstring>
#include<string>
#include <cstdlib>
#include<sstream>
#include<algorithm>
using namespace std;

string converToString(double x)
{
ostringstream o;
if(o<<x)
return o.str();
return "conversion error";
}

int main()
{
int i,j,n,count7=0;
string s;
int index=0;
while(cin>>n)
{
count7=0;
for(i=1; i<=n; i++)
{
s=converToString(i);
index=s.find('7');
if(i%7==0)
{
count7++;
continue;
}
if(index>=0 && index<=s.length())
count7++;
}
cout<<count7<<endl;
}
return 0;
}