记录洛谷刷题C语言QAQ
给定三个整数 L , D , X L,D,X L,D,X,你需要找到两个整数 N , M N,M N,M,使得:
保证 N , M N,M N,M 一定存在。
输入共三行。
第一行一个整数 L L L,第二行一个整数 D D D,第三行一个整数 X X X。
输出共两行。
第一行为一个整数 N N N,第二行为一个整数 M M M。
1
100
4
4
40
100
500
12
129
480
1
10000
1
1
10000
对于 100 % 100\% 100% 的数据, 1 ≤ L ≤ D ≤ 1 0 4 1\le L\le D\le 10^4 1≤L≤D≤104, 1 ≤ X ≤ 36 1\le X\le 36 1≤X≤36。
题目译自 COCI2015-2016 CONTEST #5 T1 ZAMKA。
#include
#include
#include
#include
int sum[10007];
int main() {
for(int i = 1; i <= 10000; ++i) {
int p = i;
while(p) {
sum[i] += p % 10;
p /= 10;
}
}
int l, d, x;
scanf("%d%d%d", &l, &d, &x);
for(int i = l; i <= d; ++i) {
if(sum[i] == x) {
printf("%d\n", i);
break;
}
}
for(int i = d; i >= l; --i) {
if(sum[i] == x) {
printf("%d\n", i);
break;
}
}
return 0;
}
生活中我们会碰到一些特殊数字,这些数字使用一些特殊表达方式后会方便记忆和使用。比如说, 1 0 9 + 7 10^9+7 109+7 就非常常见——它相比于 1000000007 1000000007 1000000007,更方便选手看清数字而不必数 0 0 0,而且没有科学计数法的精度损失。
你现在有一个形如 1 0 k + x 10^{k}+x 10k+x 的数字,请还原成一般写法。
一行两个整数 k , x k,x k,x。
一行一个整数表示 1 0 k + x 10^k+x 10k+x。
9 7
1000000007
【样例解释】
1 0 9 + 7 = 1000000007 10^9+7=1000000007 109+7=1000000007。
更多样例请到这里领取。
【数据范围】
本题采用捆绑测试,换言之,你只有通过一个子任务的所有测试点,才可以拿到该子任务对应分数。
子任务编号 | x < x< x< | k ≤ k\le k≤ | 特殊性质 | 分值 |
---|---|---|---|---|
1 | 10 10 10 | 9 9 9 | 12 | |
2 | 10 10 10 | 500 500 500 | 15 | |
3 | 1 0 18 10^{18} 1018 | 18 18 18 | 8 | |
4 | 1 0 18 10^{18} 1018 | 500 500 500 | k ≥ 18 k\ge18 k≥18 | 25 |
5 | 1 0 18 10^{18} 1018 | 500 500 500 | 40 |
对于所有数据, 0 ≤ x < 1 0 18 0\le x<10^{18} 0≤x<1018, 0 ≤ k ≤ 500 0\leq k\leq 500 0≤k≤500。
#include
#include
#include
#include
char s[30];
int k,len;
int a[100001];
int main()
{
scanf("%d",&k);
scanf("%s",&s);
for(int i=strlen(s)-1;i>=0;--i)
a[++len]=s[i]-'0';//转换成数字
a[k+1]++;//处理k
if(len <= k + 1)
len = k + 1;//获取位数
for(int i=1;i<=len;++i)
if(a[i]>9)
a[i+1]++,a[i]%=10;//处理进位
if(a[len+1])
++len;//最高位的处理
for(int i=len;i>=1;--i)
printf("%d",a[i]);//倒序输出结果
return 0;
}
Cirno 有一个字符串 S \texttt{S} S,并希望你能求出 S \texttt{S} S 出现次数最多的非空子串的出现次数,记作 p p p。
一行,一个字符串 S \texttt{S} S。
一行,一个整数 p p p。
abababab
4
对于 100 % 100\% 100% 的数据保证: 0 < ∣ S ∣ ≤ 1 0 7 0< |\texttt{S}| \le 10^7 0<∣S∣≤107, S x ∈ [ a , z ] \texttt{S}_x\in[\texttt{a},\texttt{z}] Sx∈[a,z]。
#include
#include
#include
#include
char s[10000005];
int cnt[27];
int mx;
int main(void) {
scanf("%s",s);
int slen=strlen(s);
for(int i=0;i<slen;i++) cnt[s[i]-'a']++;
for(int i=0;i<26;i++) if(cnt[i]>mx) mx=cnt[i];
printf("%d",mx);
return 0;
}
小 L 是一个菜鸡。
啥也不会的小 L 上了 NOI 考场。
由于小 L 不会算数,现在小 L 告诉了你他每题的分数和队线,请你告诉他是否进队。
NOI 分数的计算方式是:
输入 9 9 9 个数 a , b , c , d , e , f , g , h , i a,b,c,d,e,f,g,h,i a,b,c,d,e,f,g,h,i,分别表示笔试通过题数, D1T1,D1T2,D1T3,D2T1,D2T2,D2T3 得分,是否 A 类(是 1 1 1,不是 0 0 0),集训队分数线。
输出一行一个字符串。
如果进了集训队,则输出 AKIOI
。
如果没进,输出 AFO
。
50 50 72 56 100 40 0 1 446
AFO
50 95 100 64 100 72 30 0 446
AKIOI
样例第一个是退役菜鸡小 L 的 NOI2020 成绩。
第二个是某位队爷的 NOI2020 成绩。
这不是啥都没解释吗
本题采用捆绑测试。仅有通过某个 Subtask 中所有测试点才能获得该 Subtask 的分数。
对于所有数据, 0 ≤ a ≤ 50 0\leq a \leq 50 0≤a≤50, 0 ≤ b , c , d , e , f , g ≤ 100 0\leq b,c,d,e,f,g \leq 100 0≤b,c,d,e,f,g≤100, 0 ≤ h ≤ 1 0 \leq h \leq 1 0≤h≤1, 205 ≤ i ≤ 705 205\leq i \leq 705 205≤i≤705。
此处不考虑第 50 50 50 名同分的情况,可以认为如果同分小 L 优先。
不保证测试数据为真实成绩。
#include
#include
#include
#include
int main()
{
long long a, b, c, d, e, f, g, h, i;
scanf("%lld%lld%lld%lld%lld%lld%lld%lld%lld",&a,&b,&c,&d,&e,&f,&g,&h,&i);
long long sum = a+b+c+d+e+f+g+50;
if(h == 1)
{
sum = sum + 5;
}
if(sum >= i)
{
printf("AKIOI\n");
}
else
printf("AFO\n");
return 0;
}
给定一个
n
×
m
n\times m
n×m 的只含有 .
和 *
的矩阵。
矩阵中 *
形成一些不重叠的长方形。它们不在边缘或顶点接触。
求长方形有多少个?
第一行:两个正整数 n n n 和 m m m。
以下
n
n
n 行:表示题目描述中的矩阵。矩阵只含有 .
和 *
。
一行一个非负整数,你的答案。
6 7
***....
***..**
.....**
.***.**
.***...
.***...
3
3 3
*.*
...
*.*
4
1 10
.*.**.***.
3
*
。题目译自 COCI2019-2020 CONTEST #5 T1 Emacs ,译者 90693。
#include
#include
#include
#include
int n,m,ans;
char a[104][104];
int main()
{
scanf("%d%d",&n,&m);
for(int i=0;i<n;++i)
scanf("%s",a[i]);
for(int i=0;i<n;++i)
for(int j=0;j<m;++j)
if(a[i][j]=='*'&&(!i||a[i-1][j]=='.')&&(!j||a[i][j-1]=='.'))++ans;
printf("%d",ans);
return 0;
}