201912-1 报数
思路一:
#include<iostream>
#include<string>
using namespace std;
int cnt[5];
bool is7(int num);
int main()
{
int num = 1;//正常计数,用于处理7的问题
int total = 0;//剩余没有被跳过的数总和
int n; cin >> n;//数据个数限制
while (total < n)
{
if (is7(num))
{
cnt[(num + 3) % 4]++;
total--;//相当于不计入被跳过的数
}
num++;
total++;
}
for (int i = 0; i < 4; i++)
cout << cnt[i] << endl;
return 0;
}
bool is7(int num)
{
if (num % 7 == 0) return true;
while (num)
{
if (num % 10 == 7) return true;
else num /= 10;
}
return false;
}
思路二:
区别主要在于 is7函数判断,这个代码只能得20分,不知道为什么!!!还求明白人指路!!!!!!
bool is7(int num)
{
if (num % 7 == 0) return true;
string s = to_string(num);
for (int i = 0; i < s.size(); i++)
if (s[i] == '7')
{
return true;
}
return false;
}