#include <stdio.h>
#include <string.h>
void Print(char a[],int n){ //补零法 打印
char b[100];
int len = n - strlen(a);
for(int i=0;i<len;i++){
b[i]='0';
}
strcat(a,b); //在后面补 0
printf("%s\n",a);
}
int main(){
int i,m,n,len; //m:为输入字符串个数 n:为输入每串字符串的位数
char a[100];
scanf("%d %d",&m,&n);
for(int j=0;j<m;j++){
scanf("%s",a);
if(strlen(a) < n){ //字符串a的长度小于 n时,Print()打印
Print(a,n);
}else{
while(strlen(a) > n){ //把前 n个打印输出
for(i=0;i<n;i++){
printf("%c",a[i]);
}
printf("\0");
printf("\n");
for(i=n;i<=strlen(a);i++){ //将后面的前移 n个位置,然后再判断字符串 a 的长度与 n 的关系
a[i-n] = a[i];
}
}
if(strlen(a) < n){
Print(a,n);
}
}
}
return 0;
}
/*
输入:2 8
abc 123456789
输出:abc00000
12345678
90000000
*/
import java.util.Scanner;
/*
* 按要求分解字符串,输入两个数M,N;M代表输入的M串字符串,N代表输出的每
串字符串的位数,不够补0。例如:输入2,8, “abc” ,“123456789”,则输出
为“abc00000”,“12345678“,”90000000”
解题思路:按照digit取,当溢出的时候,利用StringBuilder添加0;
*/
public class SplitString {
public void split(int digit, String str) {
int time = str.length() / digit;
for (int i = 0; i < time+1; i++) {
StringBuilder result = new StringBuilder();
int start = 8*i;
int end = 8*(i+1);
if (end > str.length()) {
end = str.length();
result = result.append(str.substring(start, end));
for (int j = 0; j < 8*(i+1) - str.length(); j++) {
result = result.append("0");
}
}else {
result = result.append(str.substring(start, end));
}
System.out.println(result);
}
}
public static void main(String args[])
{
SplitString s = new SplitString();
Scanner cin = new Scanner(System.in);
int num= 0;
int digit = 0;
num = cin.nextInt();
digit = cin.nextInt();
String[] str = new String[num];
for (int i = 0; i < num; i++){
str[i] = cin.next();
}
for (int i = 0; i < num; i++){
s.split(digit, str[i]);
}
}
}
#include <iostream>
#include <string>
using namespace std;
int main()
{
int M, N,times,len;
string s;
while (cin >> M >> N)
{
while (M--)
{
s = "";
cin >> s;
len = s.size();
if (len % N == 0)
times = len / N;
else
times = len / N + 1;
s.resize(N*times, '0');
for (int i = 0; i < times; i++)
cout << s.substr(i*N,N) << endl;
}
}
return 0;
}
def solution(m,n,input): output=[] for i in range(m): output.extend(splitstr(n, input[i])) return output def splitstr(n, str): output=[] if str.__len__()<=n: while str.__len__()<n: str+='0' output.extend([str]) elif str.__len__()>0: output.extend(splitstr(n, str[:n])) output.extend(splitstr(n, str[n:])) return output
import java.util.Scanner;
/**
* 输入两个数M,N;M代表输入的M串字符串,N代表输出的每串字符串的位数,不够补0。
* 例如:输入2,8, “abc” ,“123456789”,则输出为“abc00000”,“12345678“,”90000000”
* @author swx
*
*/
public class SplitString {
public static void solution(String str, int n)
{
int len = str.length(); //the length of str
int quotient = len / n; //num of can be splited
int remainder = len % n; // remainder
if(quotient > 0)
{
for(int i = 1; i <= quotient; i++)
{
System.out.println(str.substring(n*(i - 1), n*i));
}
}
String str2 = str.substring(len - remainder);
while(str2.length() < n)
str2 += "0";
System.out.println(str2);
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNext())
{
int m = sc.nextInt(); //字符串数量
int n =sc.nextInt(); //要求截断的长度
System.out.println("字符串数量: "+ m +" 截断的长度 : "+n);
for(int i = 0;i < m; i++)
{
String str = sc.next(); //读入
solution(str,n);
}
}
}
}
#include<iostream> using namespace std;
#include<iostream>
#include<cstdio>
using namespace std;
void solve(char *str , int n , int len)
{
int i , j , k , quotient , remainder;
quotient = len / n; //原字符串被分解的个数
remainder = len - n * quotient; //剩余的字符串的个数
for(i = 0 ; i < len ; i += n)
{
if(len - i < n)
{
k = n - len + i;
for(j = i ; j < len ; ++j)
printf("%c" , str[j]);
for(j = 0 ; j < k ; ++j)
putchar('0');
}
else
{
for(j = i ; j < i + n ; ++j)
printf("%c" , str[j]);
}
putchar(' ');
}
printf("\n");
}
int main(void)
{
int i , m , n , len;
char str[1000];
while(scanf("%d %d", &m , &n) != EOF)
{
for(i = 0 ; i < m ; ++i)
{
scanf("%s" , str);
len = strlen(str);
solve(str , n , len);
}
}
return 0;
}