PTA-暑期学校-Day2-C语言
1 Cassels方程
Cassels方程是一个在数论界产生了巨大影响的不定方程:x2 + y2 + z2 = 3xyz。该方程有无穷多自然数解。判断给定的一组 (x,y,z) 是不是这个方程的解。
要求:
- 输入格式:
输入在第一行给出一个不超过 10 的正整数 N,随后 N 行,每行给出 3 个正整数 0<x≤y≤z≤1000。 - 输出格式:
对于每一组输入,如果是一组解,就在一行中输出Yes,否则输出No。 - 输入样例:
2
1 1 1
5 6 7
- 输出样例:
Yes
No
代码长度限制 16KB
时间限制 400ms
内存限制 64MB
代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
int N, x, y, z;
scanf("%d",&N);
for (int i=1; i<=N; i++)
{
scanf("%d %d %d\n",&x, &y, &z);
int p, q;
p = x*x + y*y + z*z;
q = 3*x*y*z;
if(p==q)
printf("Yes\n");
else
printf("No\n");
}
return 0;
}
2 寻找250
对方不想和你说话,并向你扔了一串数…… 而你必须从这一串数字中找到“250”这个高大上的感人数字。
要求:
- 输入格式:
输入在一行中给出不知道多少个绝对值不超过1000的整数,其中保证至少存在一个“250”。 - 输出格式:
在一行中输出第一次出现的“250”是对方扔过来的第几个数字(计数从1开始)。题目保证输出的数字在整型范围内。 - 输入样例:
888 666 123 -233 250 13 250 -222
- 输出样例:
5
代码长度限制 16KB
时间限制 400ms
内存限制 64MB
代码:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int x, i=1;
while (1)
{
scanf("%d ",&x);
if (x == 250)
break;
i++;
}
printf("%d",i);
return 0;
}
3 分段计算居民水费
为鼓励居民节约用水,自来水公司采取按用水量阶梯式计价的办法,居民应交水费y(元)与月用水量x(吨)相关:当x不超过15吨时,y=4x/3;超过后,y=2.5x−17.5。请编写程序实现水费的计算。
要求:
- 输入格式:
输入在一行中给出非负实数x。 - 输出格式:
在一行输出应交的水费,精确到小数点后2位。 - 输入样例1:
12
- 输出样例1:
16.00
- 输入样例2:
16
- 输出样例2:
22.50
代码长度限制 16KB
时间限制 400ms
内存限制 64MB
代码:
#include<stdio.h>
#include<stdlib.h>
int main()
{
float x;
scanf("%f",&x);
float y;
if (x <= 15)
{
y = 4 * x / 3;
printf("%.2f",y);//%.2f 小数点后2位
}
else
{
y = 2.5 * x - 17.5;
printf("%.2f",y);
}
return 0;
}
4 强迫症
小强在统计一个小区里居民的出生年月,但是发现大家填写的生日格式不统一,例如有的人写199808,有的人只写9808。有强迫症的小强请你写个程序,把所有人的出生年月都整理成年年年年-月月格式。对于那些只写了年份后两位的信息,我们默认小于22都是20开头的,其他都是19开头的。
要求:
- 输入格式:
输入在一行中给出一个出生年月,为一个 6 位或者 4 位数,题目保证是 1000 年 1 月到 2021 年 12 月之间的合法年月。 - 输出格式:
在一行中按标准格式年年年年-月月将输入的信息整理输出。 - 输入样例1:
9808
- 输出样例1:
1998-08
- 输入样例2:
0510
- 输出样例2:
2005-10
- 输入样例3:
196711
- 输出样例3:
1967-11
代码长度限制 16KB
时间限制 400ms
内存限制 64MB
代码:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int x, y, m;
scanf("%d",&x);
if (x/10000 > 1)
{
y = x / 100;
m = x % 100;
printf("%02d-%02d",y, m);
}
if (x/10000 < 1)
{
y = x / 100;
m = x % 100;
if (y < 22)
printf("20%02d-%02d",y, m);
else
printf("19%02d-%02d",y, m);
}
return 0;
}
5 最佳情侣身高差
专家通过多组情侣研究数据发现,最佳的情侣身高差遵循着一个公式:(女方的身高)×1.09 =(男方的身高)。如果符合,你俩的身高差不管是牵手、拥抱、接吻,都是最和谐的差度。
下面就请你写个程序,为任意一位用户计算他/她的情侣的最佳身高。
要求:
- 输入格式:
输入第一行给出正整数N(≤10),为前来查询的用户数。随后N行,每行按照“性别 身高”的格式给出前来查询的用户的性别和身高,其中“性别”为“F”表示女性、“M”表示男性;“身高”为区间 [1.0, 3.0] 之间的实数。 - 输出格式:
对每一个查询,在一行中为该用户计算出其情侣的最佳身高,保留小数点后2位。 - 输入样例:
2
M 1.75
F 1.8
- 输出样例:
1.61
1.96
代码长度限制 16KB
时间限制 400ms
内存限制 64MB
代码:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int N;
scanf("%d",&N);
char c;
float h, H;
for (int i=1; i<=N; i++)
{
getchar();
scanf("%c %f",&c, &h);
if (c == 'M')
{
H = h / 1.09;
printf("%.2f\n",H);
}
else
{
H = h * 1.09;
printf("%.2f\n",H);
}
}
return 0;
}
6 A除以B
给定两个绝对值不超过100的整数A和B,要求你按照“A/B=商”的格式输出结果。
要求:
- 输入格式:
输入在第一行给出两个整数A和B(−100≤A,B≤100),数字间以空格分隔。 - 输出格式:
在一行中输出结果:如果分母是正数,则输出“A/B=商”;如果分母是负数,则要用括号把分母括起来输出;如果分母为零,则输出的商应为Error。输出的商应保留小数点后2位。 - 输入样例1:
-1 2
- 输出样例1:
-1/2=-0.50
- 输入样例2:
1 -3
- 输出样例2:
1/(-3)=-0.33
- 输入样例3:
5 0
- 输出样例3:
5/0=Error
代码长度限制 16KB
时间限制 400ms
内存限制 64MB
代码:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main()
{
float a, b;
float result;
scanf("%f %f",&a, &b);
result = a / b;
if (y > 0)
printf("%.0f/%.0f=%.2f",a, b, result);
if (y == 0)
printf("%.0f/%.0f=Error",a, b);
if (y < 0)
printf("%.0f/(%.0f)=%.2f",a, b, result);
return 0;
}
7 12-24小时制
编写一个程序,要求用户输入24小时制的时间,然后显示12小时制的时间。
要求:
- 输入格式:
输入在一行中给出带有中间的 : 符号(半角的冒号)的24小时制的时间,如12:34表示12点34分。当小时或分钟数小于10时,均没有前导的零,如5:6表示5点零6分。
提示:在scanf的格式字符串中加入 : ,让scanf来处理这个冒号。 - 输出格式:
在一行中输出这个时间对应的12小时制的时间,数字部分格式与输入的相同,然后跟上空格,再跟上表示上午的字符串AM或表示下午的字符串PM。如5:6PM表示下午5点零6分。注意,在英文的习惯中,中午12点被认为是下午,所以24小时制的12:00就是12小时制的12:0 PM;而0点被认为是第二天的时间,所以是0:0 AM。 - 输入样例:
21:11
- 输出样例:
9:11 PM
代码长度限制 16KB
时间限制 400ms
内存限制 64MB
代码:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int h, m;
scanf("%d:%d",&h, &m);
if (0<=h && h<12)
printf("%d:%d AM",h, m);
if (h == 12)
printf("%d:%d PM",h, m);
if (12<h && h<24)
printf("%d:%d PM",h-12, m);
if (h == 24)
printf("0:%d AM",m);
return 0;
}
8 计算天数
编写程序计算某年某月某日是该年中的第几天。
要求:
- 输入格式:
输入在一行中按照格式“yyyy/mm/dd”(即“年/月/日”)给出日期。注意:闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除。闰年的2月有29天。 - 输出格式:
在一行输出日期是该年中的第几天。 - 输入样例1:
2009/03/02
- 输出样例1:
61
- 输入样例2:
2000/03/02
- 输出样例3:
62
代码长度限制 16KB
时间限制 400ms
内存限制 64MB
代码:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int y, m, d;
scanf("%d/%d/%d",&y, &m, &d);
int sum=0, flag=0;
switch(m)
{
case 1: sum=0; break;
case 2: sum=31; break;
case 3: sum=59; break;
case 4: sum=90; break;
case 5: sum=120; break;
case 6: sum=151; break;
case 7: sum=181; break;
case 8: sum=212; break;
case 9: sum=243; break;
case 10: sum=273; break;
case 11: sum=304; break;
default: sum=334; break;
}
sum += d;
if ((y%4==0 && y%100!=0) || y%400==0)
flag=1;
if (flag==1 && m>2)
sum++;
printf("%d",sum);
return 0;
}
9 谁先倒
划拳是古老中国酒文化的一个有趣的组成部分。酒桌上两人划拳的方法为:每人口中喊出一个数字,同时用手比划出一个数字。如果谁比划出的数字正好等于两人喊出的数字之和,谁就输了,输家罚一杯酒。两人同赢或两人同输则继续下一轮,直到唯一的赢家出现。
下面给出甲、乙两人的酒量(最多能喝多少杯不倒)和划拳记录,请你判断两个人谁先倒。
要求:
- 输入格式:
输入第一行先后给出甲、乙两人的酒量(不超过100的非负整数),以空格分隔。下一行给出一个正整数N(≤100),随后N行,每行给出一轮划拳的记录,格式为:
甲喊 甲划 乙喊 乙划
其中喊是喊出的数字,划是划出的数字,均为不超过100的正整数(两只手一起划)。
- 输出格式:
在第一行中输出先倒下的那个人:A代表甲,B代表乙。第二行中输出没倒的那个人喝了多少杯。题目保证有一个人倒下。注意程序处理到有人倒下就终止,后面的数据不必处理。 - 输入样例:
1 1
6
8 10 9 12
5 10 5 10
3 8 5 12
12 18 1 13
4 16 12 15
15 1 1 16
- 输出样例:
A
1
代码长度限制 16KB
时间限制 400ms
内存限制 64MB
代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
int a, b, N, m, n, x, y;
int sum=0, flag=0;
scanf("%d %d",&a, &b);
scanf("%d",&N);
for (int i=1; i<=N; i++)
{
scanf("%d %d %d %d",&m, &n, &x, &y);
if (m+x==n && m+x!=y)
{sum++;}
if (m+x==y && m+x!=n)
{flag++;}
if (sum>a && flag<=b)
{
printf("A\n");
printf("%d",flag);
break;
}
else if (sum<=a && flag>b)
{
printf("B\n");
printf("%d",sum);
break;
}
}
return 0;
}
10 幸运彩票
彩票的号码有 6 位数字,若一张彩票的前 3 位上的数之和等于后 3 位上的数之和,则称这张彩票是幸运的。本题就请你判断给定的彩票是不是幸运的。
要求:
- 输入格式:
输入在第一行中给出一个正整数 N(≤ 100)。随后 N 行,每行给出一张彩票的 6 位数字。 - 输出格式:
对每张彩票,如果它是幸运的,就在一行中输出You are lucky!;否则输出Wish you good luck.。 - 输入样例:
2
233008
123456
- 输出样例:
You are lucky!
Wish you good luck.
代码长度限制 16KB
时间限制 400ms
内存限制 64MB
代码:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int N, x, y, z, p, q;
scanf("%d",&N);
for (int i=1; i<=N; i++)
{
scanf("%d\n",&x);
y = x / 1000;
z = x % 1000;
p = y/100 + (y/10)%10 +y%10;
q = z/100 + (z/10)%10 +z%10;
if (p == q)
printf("You are lucky!\n");
else
printf("Wish you good luck.\n");
}
return 0;
}
11 找出三位水仙花数
编写程序,输出给定正整数M和N区间内的所有三位水仙花数。三位水仙花数,即其个位、十位、百位数字的立方和等于该数本身。
要求:
- 输入格式:
输入在一行中给出两个正整数M和N(100≤M≤N≤999)。 - 输出格式:
顺序输出M和N区间内所有三位水仙花数,每一行输出一个数。若该区间内没有三位水仙花数,则无输出。如果M或者N不符合题目的要求,则输出Invalid Value.。 - 输入样例1:
100 400
- 输出样例1:
153
370
371
- 输入样例2:
500 600
- 输出样例2:
- 输入样例3:
990 101
- 输出样例3:
Invalid Value.
代码长度限制 16KB
时间限制 400ms
内存限制 64MB
代码:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main()
{
int M, N;
scanf("%d %d",&M, &N);
int x, y;
int p, q, t;
x = M;
if (100<=M && M<=N && N<=999)
{
for (x=M; x<=N; x++)
{
p = x / 100;
q = x / 10 % 10;
t = x % 10;
y = p*p*p + q*q*q + t*t*t;
if (x == y)
printf("%d\n",x);
}
}
else
printf("Invalid Value.");
return 0;
}
12 统计字符[2]
编写程序,输入N个字符,统计其中英文字母、空格或回车、数字字符和其他字符的个数。
要求:
- 输入格式:
输入在第一行中给出正整数N,第二行输入N个字符,最后一个回车表示输入结束,不算在内。 - 输出格式:
在一行内按照
letter = 英文字母个数, blank = 空格或回车个数, digit = 数字字符个数, other = 其他字符个数
的格式输出。请注意,等号的左右各有一个空格,逗号后有一个空格。
- 输入样例:
10
aZ &
09 Az
- 输出样例:
letter = 4, blank = 3, digit = 2, other = 1
代码长度限制 16KB
时间限制 400ms
内存限制 64MB
代码:
#include<stdio.h>
#include<math.h>
int main()
{
int letter=0, blank=0, digit=0, other=0;
int N;
scanf("%d",&N);
char c;
scanf("%c",&c);
for (int i=1; i<=N; i++)
{
c = getchar();
if ((c>='a' && c<='z') || (c>='A' && c<='Z'))
{letter++;}
else if (c>='0' && c<='9')
{digit++;}
else if (c==' ' || c=='\n')
{blank++;}
else
{other++;}
}
printf("letter = %d, blank = %d, digit = %d, other = %d",letter, blank, digit, other);
return 0;
}
13 求一元二次方程的根
要求一元二次方程ax2 +bx+c=0的根,结果保留2位小数。
要求:
- 输入格式:
输入在一行中给出3个浮点系数a、b、c,中间用空格分开。 - 输出格式:
根据系数情况,输出不同结果:
1)如果方程有两个不相等的实数根,则每行输出一个根,先大后小;
2)如果方程有两个不相等复数根,则每行按照格式“实部+虚部i”输出一个根,先输出虚部为正的,后输出虚部为负的;
3)如果方程只有一个根,则直接输出此根;
4)如果系数都为0,则输出"Zero Equation";
5)如果a和b为0,c不为0,则输出"Not An Equation"。 - 输入样例1:
2.1 8.9 3.5
- 输出样例1:
-0.44
-3.80
- 输入样例2:
1 2 3
- 输出样例2:
-1.00+1.41i
-1.00-1.41i
- 输入样例3:
0 2 4
- 输出样例3:
-2.00
- 输入样例4:
0 0 0
- 输出样例4:
Zero Equation
- 输入样例5:
0 0 1
- 输出样例5:
Not An Equation
代码长度限制 16KB
时间限制 400ms
内存限制 64MB
代码:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main()
{
float a, b, c, d;
scanf("%f %f %f",&a, &b, &c);
d = b * b - 4 * a * c;
float x, x1, x2, real, imag;
if (a != 0)
{
if (d > 0)
{
x1 = (-b+sqrt(d)) / (a*2);
x2 = (-b-sqrt(d)) / (a*2);
printf("%.2f\n",x1);
printf("%.2f\n",x2);
}
else if (d < 0)
{
if (b != 0)
{
real = (-b)*1.0 / (2*a);
imag = sqrt(-d) / (2*a);
printf("%.2f%+.2fi\n",real, imag);
printf("%.2f%+.2fi\n",real, -imag);
}
else
{
x = sqrt(-d)*1.0 / (2*a);
printf("%.2f%+.2fi\n",0.0, x);
printf("%.2f%+.2fi\n",0.0, -x);
}
}
else
printf("%.2f\n",-b*1.0/(2*a));
}
else if (a==0 && b==0 && c==0)
printf("Zero Equation\n");
else if (a==0 && b==0 && c!=0)
printf("Not An Equation\n");
else if (a==0 && b!=0 && c!=0)
printf("%.2f\n",(-c*1.0)/b);
return 0;
}
14 输出GPLT
给定一个长度不超过10000的、仅由英文字母构成的字符串。请将字符重新调整顺序,按GPLTGPLT… 这样的顺序输出,并忽略其它字符。当然,四种字符(不区分大小写)的个数不一定是一样多的,若某种字符已经输出完,则余下的字符仍按GPLT的顺序打印,直到所有字符都被输出。
要求:
- 输入格式:
输入在一行中给出一个长度不超过10000的、仅由英文字母构成的非空字符串。 - 输出格式:
在一行中按题目要求输出排序后的字符串。题目保证输出非空。 - 输入样例:
pcTclnGloRgLrtLhgljkLhGFauPewSKgt
- 输出样例:
GPLTGPLTGLTGLGLL
代码长度限制 16KB
时间限制 400ms
内存限制 64MB
代码:
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
int main(int argc, char *argv[])
{
char c;
int num, g=0, p=0, l=0, t=0;
while (scanf("%c",&c) && c!='\n')
{
if (c=='G' || c=='g')
g++;
if (c=='P'||c=='p')
p++;
if (c=='L'||c=='l')
l++;
if (c=='T'||c=='t')
t++;
}
while (g>0 || p>0 || l>0 || t>0)
{
if (g > 0)
{
printf("G");
g--;
}
if (p > 0)
{
printf("P");
p--;
}
if (l > 0)
{
printf("L");
l--;
}
if (t > 0)
{
printf("T");
t--;
}
}
return 0;
}
15 天梯赛的善良
天梯赛是个善良的比赛。善良的命题组希望将题目难度控制在一个范围内,使得每个参赛的学生都有能做出来的题目,并且最厉害的学生也要非常努力才有可能得到高分。
于是命题组首先将编程能力划分成了 106 个等级(太疯狂了,这是假的),然后调查了每个参赛学生的编程能力。现在请你写个程序找出所有参赛学生的最小和最大能力值,给命题组作为出题的参考。
要求:
- 输入格式:
输入在第一行中给出一个正整数 N(≤2×104),即参赛学生的总数。随后一行给出 N 个不超过 106 的正整数,是参赛学生的能力值。 - 输出格式:
第一行输出所有参赛学生的最小能力值,以及具有这个能力值的学生人数。第二行输出所有参赛学生的最大能力值,以及具有这个能力值的学生人数。同行数字间以 1 个空格分隔,行首尾不得有多余空格。 - 输入样例:
10
86 75 233 888 666 75 886 888 75 666
- 输出样例:
75 3
888 2
代码长度限制 16KB
时间限制 400ms
内存限制 64MB
代码:
#include <stdio.h>
int main()
{
int N;
int a[20000], max=0, min=2000000, sum=0, flag=0;
scanf("%d",&N);
for (int i=1; i<=N; i++)
scanf("%d",&a[i]);
for (int i=1; i<=N; i++)
{
if (a[i] > max)
max = a[i];
if (a[i] < min)
min = a[i];
}
for (int i=1; i<=N; i++)
{
if (a[i] == max)
flag++;
if (a[i] == min)
sum++;
}
printf("%d %d\n",min, sum);
printf("%d %d",max, flag);
return 0;
}
16 简单计算器
模拟简单运算器的工作。假设计算器只能进行加减乘除运算,运算数和结果都是整数,四种运算符的优先级相同,按从左到右的顺序计算。
要求:
- 输入格式:
输入在一行中给出一个四则运算算式,没有空格,且至少有一个操作数。遇等号”=”说明输入结束。 - 输出格式:
在一行中输出算式的运算结果,或者如果除法分母为0或有非法运算符,则输出错误信息“ERROR”。 - 输入样例:
1+2*10-10/2=
- 输出样例:
10
代码长度限制 16KB
时间限制 400ms
内存限制 64MB
代码:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int x, y, flag=0;
scanf("%d",&x);
char c;
while(1)
{
scanf("%c",&c);
if (c == '=')
break;
scanf("%d",&y);
switch(c)
{
case '+': x = x + y;
break;
case '-': x = x - y;
break;
case '*': x = x * y;
break;
case '/':
if (y == 0)
flag = 1;
else
x = x / y;
break;
default: flag = 1;
}
if (flag == 1)
break;
}
if (flag == 1)
printf("ERROR");
else
printf("%d",x);
return 0;
}
17 N个数求和
本题的要求很简单,就是求N个数字的和。麻烦的是,这些数字是以有理数分子/分母的形式给出的,你输出的和也必须是有理数的形式。
要求:
- 输入格式:
输入第一行给出一个正整数N(≤100)。随后一行按格式a1/b1 a2/b2 … 给出N个有理数。题目保证所有分子和分母都在长整型范围内。另外,负数的符号一定出现在分子前面。 - 输出格式:
输出上述数字和的最简形式 —— 即将结果写成整数部分 分数部分,其中分数部分写成分子/分母,要求分子小于分母,且它们没有公因子。如果结果的整数部分为0,则只输出分数部分。 - 输入样例1:
5
2/5 4/15 1/30 -2/60 8/3
- 输出样例1:
3 1/3
- 输入样例2:
2
4/3 2/3
- 输出样例2:
2
- 输入样例3:
3
1/3 -1/6 1/8
- 输出样例3:
7/24
代码长度限制 16KB
时间限制 400ms
内存限制 64MB
代码:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
struct fenshu
{
long x;
long y;
}f[105], p;
long max(long a,long b);
int main()
{
int i, N;
long z=0, l=0;
scanf("%d",&N);
scanf("%ld/%ld",&f[0].x, &f[0].y);
p.x = f[0].x;
p.y = f[0].y;
for (i=1; i<N; i++)
{
scanf("%ld/%ld",&f[i].x, &f[i].y);
p.x = p.x*f[i].y + f[i].x*p.y;
p.y = p.y * f[i].y;
}
if (p.y == 0)
{
printf("0");
return 0;
}
if (p.x < 0)
{
printf("-");
p.x = -p.x;
}
if (p.x >= p.y)
{
z = p.x / p.y;
p.x = p.x - p.y*z;
printf("%ld",z);
}
if (p.x != 0)
{
l = max(p.x,p.y);
p.x = p.x / l;
p.y = p.y / l;
if (z == 0)
printf("%ld/%ld",p.x, p.y);
else
printf(" %ld/%ld",p.x, p.y);
}
if (z==0 && p.x==0)
printf("0");
return 0;
}
long max(long a, long b)
{
if (a == 0)
return b;
return max(b%a,a);
}
18 连续因子
一个正整数 N 的因子中可能存在若干连续的数字。例如 630 可以分解为 3×5×6×7,其中 5、6、7 就是 3 个连续的数字。给定任一正整数 N,要求编写程序求出最长连续因子的个数,并输出最小的连续因子序列。
要求:
- 输入格式:
输入在一行中给出一个正整数 N(1<N<231)。 - 输出格式:
首先在第 1 行输出最长连续因子的个数;然后在第 2 行中按因子1* 因子2*……*因子k的格式输出最小的连续因子序列,其中因子按递增顺序输出,1 不算在内。 - 输入样例:
630
- 输出样例:
3
567
代码长度限制 16KB
时间限制 400ms
内存限制 64MB
代码:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main()
{
int N;
scanf("%d",&N);
int t=0, l=0;
for (int i=2; i<sqrt(N)+1; i++)
{
int s=i, g=0, n=N;
for ( ; n%s==0; g++,s++)
n = n / s;
if (g > l)
{
t = i;
l = g;
}
}
if (l != 0)
{
printf("%d\n",l);
for (int i=0; i<l-1; i++)
printf("%d*",t+i);
printf("%d",t+l-1);
}
else
printf("1\n%d",N);
return 0;
}