模拟篇

模拟题是一类“题目怎么说,我们就怎么做”的题目

1.1 简单模拟

简单模拟不涉及算法,完全只是根据题目表述来进行代码的编写,所以考察的是代码能力

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
// PAT B1001 3n+1 猜想
// 入门模拟 1

// Callatz

#include<stdio.h>

int main()
{
int n=0, step=0;
scanf("%d", &n);
while( n>=1 && n<= 1000)
{
if(n == 1)
{
printf("%d", step);
break;
}
else
{
if(n%2==0)
{
n = n/2;
step++;
}
else
{
n = (3*n+1)/2;
step++;
}
}
}

return 0;
}
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
// PAT B1032 挖掘机技术哪家强
// 2

#include<iostream>
const int maxn = 100000;
using namespace std;

int main()
{
int n;
int final=0,final_sc=0;
cin >> n;

//int* p = new int[n];
int school[maxn]={0};
for(int i=0,j=0,score=0;i<n;i++)
{
cin >> j >> score;
if(j>n)
{
cout << "[Wrong]超出学校编号!" << endl;
}
else
{
school[j-1] += score;
if(school[j-1] > final_sc)
{
final = j;
final_sc = school[j-1];
}
}
}
cout << "RESULT:" << final << " " << final_sc << endl;
//delete []p;

return 0;

}

1.2 查找元素

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
// codeup 1934 找x
// 3

#include<iostream>
using namespace std;

int main()
{
int n;
cin >> n;

int* p = new int[n];
for(int i=0;i<n;i++)
{
cin >> p[i];

}

int num;
cin >> num;
for(int i=0;i<n;i++)
{
if(p[i] == num)
cout << i;
}

delete[]p;
return 0;
}

1.3 图形输出

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
// PAT B1036 奥巴马编程
// 4

#include<iostream>
using namespace std;

int main()
{
int n;
char c;
cin >> n >> c;

int raw, col;
col = n;
raw = n/2 + n%2 ;

int j=raw;
while(j--)
{
if(j==raw-1 or j==0)
{
for(int i=0;i<col;i++)
cout << c;
cout << endl;
}
else
{
cout << c;
for(int i=0;i<col-2;i++)
cout << " ";
cout << c << endl;
}
}

return 0;
}

1.4 日期处理