#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; }
#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]); } } }
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; }