2022.02.06
题目一、来源:蓝桥杯 字母图形 http://lx.lanqiao.cn/problem.page?gpid=T7
利用字母可以组成一些美丽的图形,下面给出了一个例子:
ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC
这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。
printf("%c",'A'+abs(i-j));
题目二、来源:蓝桥杯 回文数 http://lx.lanqiao.cn/problem.page?gpid=T47
for(int i=10;i<=99;i++)
{
int t=i,x=i;
for(int i=0;i<2;i++)
{
t=t*10+x%10;
x/=10;
}
printf("%d\n",t);
}
题目三、来源:蓝桥杯 杨辉三角形 http://lx.lanqiao.cn/problem.page?gpid=T10
for(int i=1;i<=n;i++)
{
a[i][1]=1;
a[i][i]=1;
}
for(int i=3;i<=n;i++)
{
for(int j=2;j<i;j++)
a[i][j]=a[i-1][j-1]+a[i-1][j];
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=i;j++)
{
cout << a[i][j] <<" ";
}
cout << endl;
}
题目四、来源:蓝桥杯 01字串 http://lx.lanqiao.cn/problem.page?gpid=T6
#include <iostream>
using namespace std;
int main()
{
for(int i=0;i<32;i++)
{
cout<<i%32/16<<i%16/8<<i%8/4<<i%4/2<<i%2<<endl;
}
return 0;
}
题目五、来源:蓝桥杯 闰年判断 http://lx.lanqiao.cn/problem.page?gpid=T5
if(year%100 && year%4==0 || year%400==0) printf("yes\n");
else printf("no\n");
题目六、来源:蓝桥杯 Fibonacci数列 http://lx.lanqiao.cn/problem.page?gpid=T4
int main()
{
cin >> n;
int a=1,b=1;
int t;
for(int i=3;i<=n;i++)
{
t=(a+b)%10007;
b=a;
a=t;
}
cout << t%10007 <<endl;
}
题目七、来源:蓝桥杯 序列求和 http://lx.lanqiao.cn/problem.page?gpid=T2
long long sum;
printf("%lld",sum);
题目八、来源:PAT 1023 组个最小数 https://pintia.cn/problem-sets/994805260223102976/problems/994805298269634560
给定数字 0-9 各若干个。你可以以任意顺序排列这些数字,但必须全部使用。目标是使得最后得到的数尽可能小(注意 0 不能做首位)。例如:给定两个 0,两个 1,三个 5,一个 8,我们得到的最小的数就是 10015558。
现给定数字,请编写程序输出能够组成的最小的数。
例子:2 2 0 0 0 3 0 0 1 0
10015558
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int a[10];
int main()
{
for(int i=0;i<10;i++) cin>>a[i];
for(int i=1;i<10;i++)
{
if(a[i]>0)
{
a[i]--;
cout<<i;
break;
}
}
for(int i=0;i<10;i++)
{
for(int j=0;j<a[i];j++)
{
cout<<i;
}
}
cout<<endl;
}
题目九、来源:PAT 1002 写出这个数 https://pintia.cn/problem-sets/994805260223102976/problems/994805324509200384
读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
例子:1234567890987654321123456789
yi san wu
#include <iostream>
#include <cstring>
#include <algorithm>
const int N=100010;
using namespace std;
char g[N];
int sum;
int num[N];
void print(int x)
{
if(x==0) printf("ling");
else if(x==1) printf("yi");
else if(x==2) printf("er");
else if(x==3) printf("san");
else if(x==4) printf("si");
else if(x==5) printf("wu");
else if(x==6) printf("liu");
else if(x==7) printf("qi");
else if(x==8) printf("ba");
else if(x==9) printf("jiu");
}
int main()
{
scanf("%s",&g);
for(int i=0;g[i]!='\0';i++)
{
sum+=g[i]-'0';
}
int k=0;
while(sum)
{
num[k++]=sum%10;
sum/=10;
}
for(int i=k-1;i>=0;i--)
{
print(num[i]);
if(i>0) printf(" ");
}
cout<<endl;
}
解法二
#include <bits/stdc++.h>
using namespace std;
int main()
{
string s;
getline(cin,s);
string array[10] = {"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};//0-9的拼音
int sum = 0;
for(int i = 0 ; i < s.length() ; i++)
sum += (s[i]- '0');
if(sum == 0) //特判
{
cout << "ling";
return 0;
}
string str = "";
while(sum)
{
str += sum%10+'0';
sum /= 10;
}
reverse(str.begin(),str.end());
for(int i = 0 ; i < str.length() ; i++)
{
cout << array[str[i]-'0']; //每个数字对应的即为存储拼音数组的下标
if(i != str.length() - 1) //末尾不要输出多余的空格
cout << " ";
}
return 0;
}