字符排序次数--简单难度
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i,m,t,j;
int n=0;
while((n*n-n)/2<100) //求完全逆序下的最短字符串长度
n++;
m=(n*n-n)/2-100; //跟完全逆序比起来字符串应该少交换m次
char arr[n]; //完全逆序字符串
for(i=0;i<n;i++)
arr[i]=97+n-i-1;
for(i=m;i>0;i--) //把第m个字符提到最前面,其他的按顺序排序,从而达到交换100次
{
if(arr[i]<arr[i-1])
{
t=arr[i];
arr[i]=arr[i-1];
arr[i-1]=t;
}
}
for(i=0;i<n;i++)
{
printf("%c",arr[i]);
}
return 0;
}
特别数的和--简单难度
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int i,j,sum=0,n;
scanf("%d",&n);
for(i=1;i<=n;i++)
for(j=i;j>0;j=j/10){
if(j%10==1){
sum+=i;
break;
}
if(j%10==0){
sum+=i;
break;
}
if(j%10==2){
sum+=i;
break;
}
if(j%10==9){
sum+=i;
break;
}
}
printf("%d",sum);
return 0;
}
饮料换购--中等难度
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int n,sum=0,t;
scanf("%d",&n);
t=n;
sum+=n; //累加初始饮料数
while(t>=3){
sum+=t/3; //累加兑换的瓶数
t=t/3+t%3; //取商的同时记得累加剩余瓶数
}
printf("%d",sum);
return 0;
}
啤酒与饮料--简单难度
//暴力枚举型
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int i,j;
for(i=0;i<43;i++)
for(j=0;j<35;j++)
if(i*1.9+j*2.3==82.3)
if(i>j){
printf("%d",j);
return 0;
}
return 0;
}
跑步锻炼--简单难度
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int km=0,week=6; //week是星期几
int month[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
for(int year=2000;year<2021;year++){
if(year%4==0&&year%100!=0||year%400==0)
month[2]=29;
else
month[2]=28;
for(int mon=1;mon<=12;mon++){
for(int day=1;day<=month[mon];day++){
km++;
if(week==8) //星期八时返回星期一
week=1;
if(week==1||day==1)
km++;
week++;
if(year==2020&&mon==10&&day==1){
printf("%d",km);
return 0;
}
}
}
}
return 0;
}