只需要看第四行的字符特点就可以了:
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
int n;
int i, j;
char a[5][100];
cin >> n;
for (i = 0; i < 5; i++)
cin >> a[i];
int l = strlen(a[0]);
int m = 0;
for (i = 0; i < l; i++)
{
m++;
if (m == 1 && a[3][i] == '*')
cout << "2";
if (m== 2 && a[3][i] == '*')
cout << "1";
if (m == 3 && a[3][i] == '*')
cout << "3";
if (m == 4)
m= 0;
}
cout << endl;
return 0;
}
1407: 数的划分
#include<algorithm>
#include<iostream>
using namespace std;
int fun(int n, int m)
{
if (m == 1 || n == 1)
{
return 1;
}
if (m >n)
{
return fun(n, n);
}
if (m == n)
{
return 1 + fun(n, m - 1);
}
if(m<n)
{
return fun(n-m,m) + fun(n, m - 1);//包括m和不包括m
}
}
int main()
{
int n;
while (cin >> n)
{
cout << fun(n, n) << endl;
}
}
2173: 外观数列
#include<algorithm>
#include<iostream>
#include<string>
using namespace std;
string fun(int n) {
if (n == 1) {
return "1";
}
string ss = fun(n - 1);
string res = "";
int count = 1;
for (int i = 0; i < ss.length(); i++) {
if (ss[i] == ss[i + 1]) {
count++;
}
else {
res +=to_string(count)+ ss[i];
count = 1;
}
}
return res;
}
int main()
{
int n;
while (cin >> n)
cout << fun(n) << "\n";
}
1427: 线性搜索
#include<algorithm>
#include<iostream>
using namespace std;
int a[10005];
int b[505];
int main()
{
int n, q;
int count = 0;
while (cin >> n)
{
count = 0;
for (int i = 0; i < n; i++)
{
scanf("%d", &a[i]);
}
scanf("%d", &q);
for (int i = 0; i < q; i++)
{
scanf("%d", &b[i]);
}
for (int i = 0; i < n; i++)
{
int flag = a[i];
for (int j = 0; j < q; j++)
{
if (b[j] == flag)
{
count++;
}
}
}
printf("%d\n", count);
}
}
1418: 二分搜索(递归)
#include<algorithm>
#include<iostream>
using namespace std;
int fun(int a[], int left, int right,int n)
{
if (left > right)
{
return -1;
}
int mid = (left + right) / 2;
if (a[mid] == n)
{
return mid+1;
}
else if (a[mid] > n)
{
return fun(a,left,mid-1,n);
}
else
{
return fun(a, mid + 1, right, n);
}
}
int main()
{
int m, n;
int a[1005];
while (cin >> m)
{
for (int i = 0; i < m; i++)
{
cin >> a[i];
}
cin >> n;
cout << fun(a, 0, m, n) << endl;
}
}
1418: 二分搜索(非递归)
#include<algorithm>
#include<iostream>
using namespace std;
int fun(int a[], int left, int right,int n)
{
while (left<=right)
{
int mid = (left + right) / 2;
if (a[mid] == n)
{
return mid+1;
}
else if (a[mid] > n)
{
right = mid-1;
}
else
{
left = mid+1;
}
return -1;
}
}
int main()
{
int m, n;
int a[1005];
while (cin >> m)
{
for (int i = 0; i < m; i++)
{
cin >> a[i];
}
cin >> n;
cout << fun(a, 0, m, n) << endl;
}
}
1424: 二分搜索升级版
#include<algorithm>
#include<iostream>
using namespace std;
int fun(int a[], int left, int right,int n)
{
if (left > right)
{
return -1;
}
int mid = (left + right) / 2;
if (a[mid] == n)
{
return mid+1;
}
else if (a[mid] > n)
{
return fun(a,left,mid-1,n);
}
else
{
return fun(a, mid + 1, right, n);
}
return -1;
}
int main()
{
int m, n;
int a[1005];
while (cin >> m)
{
for (int i = 0; i < m; i++)
{
cin >> a[i];
}
cin >> n;
int result = fun(a, 0, m, n);
if (result!= -1)
{
cout << result << " " << result << endl;
}
else
{
int f1, f2;
for (int i = 0; i < m; i++)
{
if (a[i] > n)
{
f2 = i+1;
f1 = f2 - 1;
break;
}
}
cout << f1 << " " << f2 << endl;
}
}
}
1430: Strange function
#include<algorithm>
#include<iostream>
using namespace std;
double fun(double x, double y)
{
return 6 * pow(x, 7) + 8 * pow(x, 6) + 7 * pow(x, 3) + 5 * pow(x, 2) - y * x;
}
int main()
{
int t; double y;
cin >> t;
while (t--)
{
cin >> y;
double l = 0, r = 100, mid, mmid;
mid = (l + r) / 2.0;
mmid = (mid + r) / 2.0;
while (fabs(mid - mmid) > 1e-8)
{
if (fun(mid, y) < fun(mmid, y))
{
r = mmid;
}
else
l = mid;
mid = (l + r) / 2.0;
mmid = (mid + r) / 2.0;
}
printf("%.4lf\n", fun(mid, y));
}
}