a题:
模拟题,根据题目已知的信息可以直接求出答案,需要注意的点是取余数。
#include <bits/stdc++.h>
using namespace std;
int main(void)
{
int c, s, n, r, u;
cin >> c;
while(c--){
s = 0;
cin >> n;
r = n / 2;
n = n - r;
if(r > 10){
u = n % 10;
r = r / 10;
s = s + r;
}
if(u > 0)
s = s + 1;
r = 2 * n / 3;
// cout << r << endl;
n = n - r;
// cout << n << endl;
if(r > 10){
u = r % 10;
r = r / 10;
s = s + r;
}
if(u > 0)
s = s + 1;
if(n > 10){
u = n % 10;
n = n / 10;
s = s + n;
}
if(u > 0)
s = s + 1;
cout << s ;
}
return 0;
}
b 题
大数加法,最坑点就是当进位为1的时候输出的格式,没有s;
第二个点就是多次测试那,不懂的可以直接用while(1){。。。}写。
#include <bitsdc++.h>
using namespace std;
const int M = 10000;
int main(void)
{
string s1, s2;
int a[M],b[M],c[M];
while(cin>>s1>>s2){
int sum = 0;
if(s1 == "0" && s2 == "0") return 0;
for(int i = 0; i < s1.size();i++)
{
a[i] = s1[s1.size()-i-1] - '0';
}
for(int i = 0; i < s2.size();i++)
{
b[i] = s2[s2.size()-i-1] - '0';
}
for(int i = 0; i < max(s1.size(),s2.size());i++)
{
c[i] = a[i]+b[i];
}
for(int i = 0;i < max(s1.size(),s2.size());i++)
{
if(c[i] >= 10)
{
c[i+1] += c[i]/10;
c[i] = c[i]%10;
sum++;
}
}
if(sum == 0) cout << "No carry operation." << endl;
else if(sum == 1) cout << "1 carry operation." << endl;
else cout << sum << " carry operations." << endl;
}
return 0;
}
c 题 用long long 就能过了
#include <bits/stdc++.h>
using namespace std;
int main(void)
{
long long n;
int r, sum;
while(cin >> n)
{
sum = 0;
if(n == 0) return 0;
r = n % 10;
m = n / 10;
sum = m - 5 * r;
if(sum % 17 == 0) cout << "1" << endl;
else cout << "0" << endl;
}
return 0;
}
d 题 斐波那契博弈 满足斐波那契后者胜。
#include <iostream>
using namespace std;
const int M = 1001;
int main(void)
{
int n, a[M];
int flag = 1;
a[0] = a[1] = 1;
for(int i = 2; i < M; i++)
a[i] = a[i-1] + a[i-2];
while(cin>>n&&n)
{
flag = 1;
for(int i = 0; i < M; i++){
if(n == a[i]){
cout << "Second win";
flag = 0;
break;
}
}
if(flag == 1)
cout << "First win";
cout <<endl;
}
return 0;
}
e题 用字符串,,,,没有多次测试。。。。
#include <bits/stdc++.h>
using namespace std;
int main(void)
{
string a;
int sum = 0;
cin>>a;
for(int i = 0; i<a.size();i++){
if(a[i] >= 'a' && a[i] <= 'z' || a[i] >= 'A' && a[i] <= 'Z')
sum++;
}
cout << sum << endl;
return 0;
}
f 题 是个八皇后的题。 具体等学到图那可以做以下
感兴趣的同学取洛谷看。 洛谷1219.