#include
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
double month[20];
for(int i=0;i<12;i++) scanf("%lf",&month[i]);
double ans=1;
for(int i=0;i<12;i++) ans=(month[i]/100+1)*ans;
ans*=100;
ans-=100;
printf("%.3lf\n",ans);
}
return 0;
}
注意题目输入的是带百分号的数字,输入1表示的是0.01,另外输出的答案也是输出带百分号的答案,注意还要减去原来的大小才是计算的利率,合理使用双精度变量非常方便
#include
#include
#define N 100010
bool state[N];
int main()
{
int a,c,m;
while(~scanf("%d%d%d",&a,&c,&m))
{
for(int i=0;i
注意标记状态,把0~m-1这些数字初始状态都标记为false,然后使用循环,如果可以生成某数字,就把该数字的状态标记为true,之后遍历0~m-1数字的状态,如果存在数字的状态仍然是false,说明该数字不能使用所给方程生成出来,输出No,反之输出Yes
#include
int gcd(int a,int b)
{
return b>0?gcd(b,a%b):a;
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int n,m;
scanf("%d%d",&n,&m);
int total_down=n*(n-1)*(n-2)/6;
int total_up=m*(m-1)*(m-2)/6;
int u=gcd(total_down,total_up);
total_down/=u;
total_up/=u;
if(n==m) printf("1\n");
else if(m<3) printf("0\n");
else printf("%d/%d\n",total_up,total_down);
}
return 0;
}
题目有点绕,主要考查的是最大公约数模板:最大公约数模板
有一些简单的排列组合的知识,从n个元素里面选择3个,有多少种情况(total_down),从m个元素里面选择3个,有多少种情况(total_up),然后分情况讨论一下
#include
int main()
{
char c[2];
while(~scanf("%s",c))
{
int length=c[0]-'A';
for(int i=0;i<=length;i++)
{
int j,k,m;
for(j=0;j<=length*2-i;j++) printf(" ");
for(k=0;k<=i;k++) printf("%c",'A'+k);
for(m=k-2;m>=0;m--) printf("%c",'A'+m);
printf("\n");
}
for(int i=0;i<=length;i++)
{
int l,h,g;
for(l=0;l<=length-i-1;l++) printf(" ");
for(h=0;h<=i;h++) printf("%c",'A'+h);
for(g=h-2;g>=0;g--) printf("%c",'A'+g);
int q,w,e;
for(q=0;q<=length*2-i*2;q++) printf(" ");
for(w=0;w<=i;w++) printf("%c",'A'+w);
for(e=w-2;e>=0;e--) printf("%c",'A'+e);
printf("\n");
}
}
return 0;
}
是一个恐怖的模拟题目,我们输入的时候有换行,所以使用字符数组,字符串输入可以避免这个问题,数组的第一个元素就是我们输入的字符
可以分两个循环来实现,第一个循环是上面的三角形,第二个循环是下面的两个三角形,第二个循环里面先打印左边三角形,再打印右边三角形
循环变量的终点需要取什么数值,需要我们根据样例找规律找出来,建立各个循环变量之间的关系即可,可以一边写代码,一边测试打印结果是否符合预期效果
#include
int gcd(int a,int b)
{
return b>0?gcd(b,a%b):a;
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int n,k;
scanf("%d%d",&n,&k);
if(gcd(n,k+1)==1) printf("Yes\n");
else printf("No\n");
}
return 0;
}
注意k是中间间隔的青蛙数目,不是两只青蛙之间的距离,比如说第一个样例,从1到3,中间间隔的不是2那只青蛙,间隔的是4,5两只青蛙,所以从1到3其实是只可以逆时针走的(刚开始看到题目我还以为是题目描述出错了)
经过分析我们发现,k+1表示的是每一次青蛙可以跳的单位数,涉及到一些数论知识,笔者也没有完全弄懂,(k+1)x=c%n,(k+1)x=ny+c, (k+1)x-ny=c,根据裴蜀定理,可以知道需要k+1和n互质