本人刚开始去想去寻求规律,利用表格找不出来如图所下
甲 | 乙 | 丙 | 丁 |
1 | 2 | 3 | 4 |
5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 |
29 | 30 | 31 | 32 |
33 | 34 | 35 | 36 |
37 | 38 | 39 | 40 |
41 | 42 | 43 | 44 |
45 | 46 | 47 | 48 |
49 | 50 | 51 | 52 |
53 | 54 | 55 | 56 |
57 | 58 | 59 | 60 |
61 | 62 | 63 | 64 |
65 | 66 | 67 | 68 |
69 | 70 | 71 | 72 |
73 | 74 | 75 | 76 |
77 | 78 | 79 | 80 |
81 | 82 | 83 | ![]() |
开始用正常思路去写,因为我看题上所给的数据,范围100~666之间,但是应为有一些数字 被忽略了,所谓我给了个1500~3000的范围,直接利用for循环
#include<iostream>
using namespace std;
int main(){
int a,b,c,d;
a=b=c=d=0;
int n;
cin>>n;
int cnt=0;
for(i=1;i<3000&&cnt<=n;i++){
string s=to_spring(i);
if(i%4==1&&(i%7==0||s.find('7')!=s.npos)) a++;
else if(i%4==2&&(i%7==0||s.find('7')!=s.npos)) b++;
else if(i%4==3&&(i%7==0||s.find('7')!=s.npos)) c++;
else if(i%4==0&&(i%7==0||s.find('7')!=s.npos)) d++;
else cnt++;}
cout<<a<<endl<<b<<endl<<c<<endl<<d;}
定义了4个变量,储存甲乙丙丁的次数,只要满足7的倍数或者有7,就可以满足,对4的余数1,2,3,0分别对应甲乙丙丁,只要不满足,cnt就一直加,加到题目给的数据。
只得了70分。