Codeforces-260A_Adding Digits
来源:互联网 发布:ubuntu安装时重新分区 编辑:程序博客网 时间:2024/06/05 17:54
**
A. Adding Digits
**
time limit per test2 seconds
memory limit per test256 megabytes
inputstandard input
outputstandard output
Vasya has got two number: a and b. However, Vasya finds number a too short. So he decided to repeat the operation of lengthening number a n times.
One operation of lengthening a number means adding exactly one digit to the number (in the decimal notation) to the right provided that the resulting number is divisible by Vasya’s number b. If it is impossible to obtain the number which is divisible by b, then the lengthening operation cannot be performed.
Your task is to help Vasya and print the number he can get after applying the lengthening operation to number a n times.
Input
The first line contains three integers: a, b, n (1 ≤ a, b, n ≤ 105).
Output
In a single line print the integer without leading zeros, which Vasya can get when he applies the lengthening operations to number a n times. If no such number exists, then print number -1. If there are multiple possible answers, print any of them.
Examples
input
5 4 5
output
524848
input
12 11 1
output
121
input
260 150 10
output
-1
题意:
给出三个数正整数 a , b , n;要求在 a 的后方加上 n 个数,且所得数能 % b == 0 ;若不能得出结果,printf (“-1”);
刚开始我的思路是很简单的,即找到 a b 的最小公倍数然后往后加零就行了,能力不到,只能再想办法。
以下是ac代码思路:
首先我们可以知道,一个数的前x个非零数的 mod 等于整个数的 mod;(如 10380000 取 mod 可以直接从 1038 开始入手,因为k若对 1038 mod等于 0 ,则对 10380000 理所当然的 mod 等于 0);那么我们可以把思路稍微倒一下,找到 a 开头,且 mod 等于 0 的整数,这个整数后边无论跟多少个 0 ,均可以对 b mod 等于 0 ;
以下是ac代码实现:
#include <cstdio>#include <cstring>#include <algorithm>#include <cstdlib>#include <cmath>using namespace std;int main(){ long long a,b,c; scanf ("%lld%lld%lld",&a,&b,&c); int flag=0;int i;//i放于for循环外是方便于下方判断打印的0的个数 for (i=1;i<=c;i++) { a *= 10; if (a<1) {flag=0;break;}//此处特判防止运算爆出负数 if (a % b != 0) { for (int j=1;j<=9;j++) { a++; if (j == 9 && a % b != 0) {a -= 9;break;} if (a % b == 0) {flag=1;break;} } } else flag=1; if (flag) break; } if (flag) { printf ("%lld",a); for (int j=1;j<=c-i;j++) { if (j==c-i) printf ("0\n"); else printf ("0"); } } else printf ("-1\n");}
另附上CF 红名大神代码:
#include<stdio.h>int a,b,n,j,R;int main(){scanf("%d%d%d",&a,&b,&n);R=a%b;R*=10;for(j=0;j<10;j++)if((R+j)%b==0)break;printf("%d",j>9?-1:a*10+j);if(j<=9)for(j=0;j<n-1;j++)printf("0");}//by ainta
- Codeforces-260A_Adding Digits
- Codeforces 260A Adding Digits
- Codeforces-260a F Adding Digits
- CodeForces 260A Adding Digits 模拟
- codeforces-260A-Adding Digits【脑洞】
- Codeforces Gym100531D Digits 暴力
- CodeForces 352A Jeff and Digits
- codeforces#84_div2_C Lucky Sum of Digits
- codeforces 289 C Sums of Digits
- Sums of Digits - CodeForces 509 C
- Codeforces 509c Sums of Digits 贪心
- codeforces 509C Sums of Digits
- CodeForces-352A Jeff and Digits
- 【81.37%】【codeforces 734B】Anton and Digits
- codeforces 734B.Anton and Digits
- codeforces 770B Maximize Sum of Digits
- codeforces 585F. Digits of Number Pi
- Codeforces Round #204 (Div. 2) A. Jeff and Digits
- Red hat Linux用yum命令安装MariaDB
- The script for Installing UHD+GNUradio
- vi / vim保存文件时遇到的问题:E212: Can't open file for writing
- 干货季01:vCenter Server安装到SSO的时候报错
- JDK源码(1)
- Codeforces-260A_Adding Digits
- 正则表达式
- 关于springbatch框架的一点点总结
- Longest Palindrome
- 自定义删除Cell
- 捷速编辑pdf文件插入图片的方法
- 用于不同进程之间的上锁 原理
- 第十六周项目一 验证算法——冒泡排序
- javadoc 生成API文档