Codeforces Round #262 (Div. 2) 总结

123 篇文章 0 订阅

A

A. Vasya and Socks
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output

Vasya has n pairs of socks. In the morning of each day Vasya has to put on a pair of socks before he goes to school. When he comes home in the evening, Vasya takes off the used socks and throws them away. Every m-th day (at days with numbers m, 2m, 3m, ...) mom buys a pair of socks to Vasya. She does it late in the evening, so that Vasya cannot put on a new pair of socks before the next day. How many consecutive days pass until Vasya runs out of socks?

Input

The single line contains two integers n and m (1 ≤ n ≤ 100; 2 ≤ m ≤ 100), separated by a space.

Output

Print a single integer — the answer to the problem.

Sample test(s)
input
2 2
output
3
input
9 3
output
13
Note

In the first sample Vasya spends the first two days wearing the socks that he had initially. Then on day three he puts on the socks that were bought on day two.

In the second sample Vasya spends the first nine days wearing the socks that he had initially. Then he spends three days wearing the socks that were bought on the third, sixth and ninth days. Than he spends another day wearing the socks that were bought on the twelfth day.


题意: 给出一个n,m,每天n减1,当天数达到m天的倍数的时候,n加1,每天的n的值不能为0和负,问最后最多能达到多少天。

解:模拟

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int main()
{
    int n,m;
    while(scanf("%d%d",&n,&m)!=EOF)
    {
        int temp=m;
        int cnt=2;
        int sum=0;
        for(int i=1; i<=n; i++)
        {
            if(i%temp==0)
            {
                temp=cnt*m;
                cnt++;
                n++;
            }
            sum++;
        }
        printf("%d\n",sum);

    }
    return 0;
}

B. Little Dima and Equation
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output

Little Dima misbehaved during a math lesson a lot and the nasty teacher Mr. Pickles gave him the following problem as a punishment.

Find all integer solutions x (0 < x < 109) of the equation:

x = b·s(x)a + c, 

where abc are some predetermined constant values and function s(x) determines the sum of all digits in the decimal representation of number x.

The teacher gives this problem to Dima for each lesson. He changes only the parameters of the equation: abc. Dima got sick of getting bad marks and he asks you to help him solve this challenging problem.

Input

The first line contains three space-separated integers: a, b, c (1 ≤ a ≤ 5; 1 ≤ b ≤ 10000;  - 10000 ≤ c ≤ 10000).

Output

Print integer n — the number of the solutions that you've found. Next print n integers in the increasing order — the solutions of the given equation. Print only integer solutions that are larger than zero and strictly less than 109.

Sample test(s)
input
3 2 8
output
3
10 2008 13726 
input
1 2 -18
output
0
input
2 2 -1
output
4
1 31 337 967 

题意很清楚,就是计算x和x各位和s(x)的一个关系等式是否成立,成立就输出x。这题思路形成得还是比较快,枚举s(x)。s(x)的范围是1到81

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
#define LL long long
const int maxm=1e5+10;
LL ans[maxm];
LL pow(LL a,LL b)
{
    LL sum=1;
    for(LL i=1;i<=b;i++)
    {
        sum*=a;
    }
    return sum;
}
LL check(LL k,LL sum)
{
    LL sum1=0;
    while(k!=0)
    {
        sum1+=(k%10);
        k/=10;
    }
    if(sum==sum1)
        return 1;
    else
        return 0;
}
int main()
{
    LL a,b,c;
    while(scanf("%lld%lld%lld",&a,&b,&c)!=EOF)
    {
        LL cnt=0;
        for(LL i=1;i<=81;i++)
        {
            LL t=b*pow(i,a)+c;
            if(check(t,i)&&t<1000000000)
            {
                ans[cnt++]=t;
            }
        }
        printf("%lld\n",cnt);
        for(int i=0;i<cnt;i++)
        {
            if(i==0)
                printf("%lld",ans[i]);
            else
                printf(" %lld",ans[i]);
        }
        printf("\n");
    }
    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值