#include <iostream>
using namespace std;
int main()
{
int n;
cin>>n;
int a[4]={0};
int i=1;
int num=0;
while(num<n)
{
if(i%7==0||i%10==7||(((i/10)%10)==7))
{
a[(i-1)%4]++;
}
else
{
num++;
}
i++;
}
for(int i=0;i<4;i++)
{
cout<<a[i]<<endl;
}
return 0;
}
#include <iostream>
using namespace std;
int have7(int n)
{
while(n)
if(n % 10 == 7) return 1;
else n /= 10;
return 0;
}
int main(void)
{
int n, num = 1, count = 1, cnt[4] = { 0};
cin>>n;
while(count <= n) {
if(num % 7 == 0 || have7(num))
cnt[(num - 1) % 4]++;
else
count++;
num++;
}
int i;
for(i = 0; i < 4; i++)
{
cout<<cnt[i]<<endl;
}
return 0;
}
疑惑的地方:
第一段代码是我写的代码60分,第二段代码是ac满分代码,目前没想明白这其中有什么差错
做题小结:
1.想要知道数num是否可以被n整除,可以用if(num%n0)来判断
2.想要知道数num是否含有数字n,可以对其取余->整除10->取余,直到n<10,j就是每次都取出各位数,看其是否为n ps:
while(num>10)
if(num%107)
num=num/10
3.有时候需要在数组的维度上循环的时候,可以利用i虽然是不断增大,但是通过对数组数取余即可得到。