题目链接 https://vjudge.net/contest/193071
for循环遍历 找到数字个数
#include
#include
char str[10000000];
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
scanf("%s",str);
int len=strlen(str);
int sum=0;
for(int i=0;i='0'&&str[i]<='9')
sum++;
}
printf("%d\n",sum);
}
return 0;
}
B - 亲和数
#include
#include
#include
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int n,m;
scanf("%d%d",&n,&m);
int sum1=0,sum2=0;
for(int i=1;i<=sqrt(n*1.0);i++)
{
if(n%i==0)
sum1+=i+n/i;
}
sum1-=n;
for(int i=1;i<=sqrt(m*1.0);i++)
{
if(m%i==0)
sum2+=i+m/i;
}
sum2-=m;
if(sum1==m&&sum2==n)
printf("YES\n");
else printf("NO\n");
}
return 0;
}
#include
#include
#include
int main()
{
int n,m;
while(~scanf("%d%d",&n,&m),(n||m))
{
int sum=0;//总共过的天数
while(n)
{
sum+=n/m*m;//先加上最多能过的k天的倍数
n=n%m+n/m;//剩下的不够k天的钱再加上获赠的钱
if(n
快速幂水题 每次 %10
#include
typedef long long LL;
int kuai(LL n,LL k)
{
LL sum=1,p=n;
while(k)
{
if(k&1)
sum=(p*sum)%10;
p=((LL)p*p)%10;
k>>=1;
}
return (int)sum;
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
LL n;
scanf("%lld",&n);
printf("%d\n",kuai(n,n));
}
return 0;
}
E - 权势二进制
因为每一位都可以选择加1或者加0 所以只要得到各个位上数字的最大值就好
#include
int main()
{
int n,ma=0;
scanf("%d",&n);
while(n)
{
int t=n%10;
if(t>ma)
ma=t;
n=n/10;
}
printf("%d\n",ma);
}
#include
#include
#include
using namespace std;
char a[1009];
int b[10000];
int main()
{
while(~scanf("%s",a))
{
int len=0;
for(int i=0;i
#include
bool pan(int x)//判断是否为闰年
{
if((x%4==0&&x%100)||x%400==0)
return 1;
return 0;
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int y,m,d;
scanf("%d-%d-%d",&y,&m,&d);
if(m==2&&d==29)
{
printf("-1\n");
}
else
{
int k=0,sum=0;
for(int i=y+1;i2)
k++;
}
printf("%d\n",k*366+(18-k)*365);
}
}
}
H - 阿牛的EOF牛肉串
O后面只能接 E或F E后面是 O E F F后面是 O E F
假设结尾是O的串数为 a 结尾是E或F的串数为 b
因为 只有结尾是E或 F后面才能添 O
结尾为O或E或F 后面都能添 E 或F
所以 如果再增加1个字符则 a=b b=2*(a+b)
而最开始只有1个字符的时候 a=1 ,b=2 然后开始递推 最后输出 a+b
#include
#include
#include
using namespace std;
int main()
{
long long n;
while(~scanf("%lld",&n))
{
long long a=2,b=1;
for(long long i=2;i<=n;i++)
{
long long p=a,pp=b;
b=p;
a=pp*2+p*2;
}
printf("%lld\n",a+b);
}
return 0;
}
#include
#include
#include
char str[100];
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
scanf("%s",str);
int len=strlen(str);
int a1=0,a2=0,a3=0,a4=0;
for(int i=0; i='0'&&str[i]<='9') a3=1;
if(str[i]>='a'&&str[i]<='z') a2=1;
if(str[i]>='A'&&str[i]<='Z') a1=1;
if(str[i]=='~'||str[i]=='!'||str[i]=='@'||str[i]=='#'||str[i]=='$'||str[i]=='%'||str[i]=='^')
a4=1;
}
if(len<=16&&len>=8&&a1+a2+a3+a4>=3) //只要满足3个条件
printf("YES\n");
else printf("NO\n");
}
return 0;
}
#include
#include
int main()
{
int n,m;
while(~scanf("%d%d",&n,&m))
{
double sum=(double)n,sun=(double)n;
for(int i=2;i<=m;i++)
{
sum+=sqrt(sun);
sun=sqrt(sun);
}
printf("%.2lf\n",sum);
}
return 0;
}
枚举后两位从 0到99 看(尾数加100*a )%b 是否为0
#include
int main()
{
int a,b;
while(~scanf("%d%d",&a,&b)&&a+b)
{
int t=a*100;
int o=0;
for(int i=0;i<100;i++)
{
if((t+i)%b==0)
{
if(o==0)
{
printf("%02d",i);
o++;
}
else
printf(" %02d",i);
}
}
printf("\n");
}
}