质数因子
按照从小到大的顺序输出它的所有质数的因子,以空格隔开。最后一个数后面也要有空格。
//Java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.lang.*;
public class Main {
public static void main(String args[]) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str;
StringBuilder sb = new StringBuilder();
while ((str = br.readLine()) != null) {
int sum = Integer.valueOf(str);
for (int i = 2; i <= Math.sqrt(sum) ; i++) {
if (sum % i ==0) {
sb.append(i+" ");
sum/=i;
i--;
}
}
sb.append(sum+" ");
System.out.println(sb.toString());
}
}
}
#include<stdio.h>
void get_rt(int num)
{
for(int i = 2; i <= num; i++)
{
while((num%i)==0)
{
printf("%d ",i);
num/=i;
}
}
}
int main(void)
{
int num;
int index = 0;
while(scanf("%d",&num)!=EOF)
{
get_rt(num);
}
return 0;
}
合并表记录
数据表记录包含表索引和数值(int范围的整数),请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照key值升序进行输出。
输入描述:
先输入键值对的个数
然后输入成对的index和value值,以空格隔开
输出描述:
输出合并后的键值对(多行)
// Java
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s = br.readLine().trim();
int length = Integer.parseInt(s);
int[] value = new int[length];
StringBuilder sb = new StringBuilder();
for(int i = 1; i <= length; i ++){
String[] sArray = br.readLine().trim().split(" ");
value[Integer.parseInt(sArray[0])] += Integer.parseInt(sArray[1]);
}
for(int i = 0; i < length; i ++){
if(value[i] != 0){
sb.append(i + " " + value[i] + "\n");
}
}
System.out.println(sb);
}
}
#include "stdio.h"
int main()
{
int n,a,b,i=0,num[1000]={0};
while(scanf("%d",&n)!= EOF )
{
for(i=0;i<n;i++)
{
scanf("%d %d",&a,&b);
num[a]+=b;
}
for(i=0;i<n;i++)
{
if(num[i]==0)
continue;
else
printf("%d %d\n",i,num[i]);
}
}
return 0;
}
提取不重复的整数
输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。
//Java
import java.io.InputStream;
public class Main {
public static void main(String[] args) throws Exception {
InputStream in = System.in;
int available = in.available()-1;
char[] chars = new char[available];
while (available-- > 0) {
chars[available] = (char) in.read();
}
StringBuilder resul = new StringBuilder();
for (int i = 0; i < chars.length; i++) {
if (resul.lastIndexOf(String.valueOf(chars[i])) != -1){
continue;
}
resul.append(chars[i]);
}
System.out.println(resul.toString());
}
}
#include <stdio.h>
#include <string.h>
int main(void)
{
char a[100]={0};
scanf("%s",&a);
char b[100]={0};
int len=strlen(a)-1;
int c=0;
for(int i=0;i<=len;i++)
{
if(b[a[len-i]]==0)
{
printf("%c",a[len-i]);
b[a[len-i]]++;
}
}
}
字符个数统计
编写一个函数,计算字符串中含有的不同字符的个数。字符在ACSII码范围内(0~127),换行表示结束符,不算在字符里。不在范围内的不作统计。多个相同的字符只计算一次
输入
abaca
输出
3
// Java
import java.util.*;
import java.io.*;
public class Main{
public static void main(String[]args)throws Exception{
BufferedReader shuru = new BufferedReader(new InputStreamReader(System.in));
String s = shuru.readLine();
int[] a = new int[128];
int count=0;
for(int i=0;i<s.length();i++){
char b = s.charAt(i);
if(a[b]==0){
count++;
a[b]=1;
}
}
System.out.println(count);
}
}
#include<stdio.h>
#include<string.h>
int main()
{
char temp[1024] = {0};
fgets(temp,1024,stdin);
int count = 0;
char a[1024] ={0};
for(unsigned i = 0;i < strlen(temp)-1;i++)
{
if(temp[i] > 0 && temp[i] < 127)
{
if(a[temp[i]] == 0)
{
count++;
a[temp[i]] = 1;
}
}
}
printf("%d",count);
return 0;
}
字串的链接最长路径查找
给定n个字符串,请对n个字符串按照字典序排列。
// Java
import java.util.*;
import java.io.*;
public class Main{
public static void main(String[] args) throws IOException{
BufferedReader bf=new BufferedReader(new InputStreamReader(System.in));
int count=Integer.parseInt(bf.readLine());
String[] result=new String[count];
for(int i=0;i<count;i++)result[i]=bf.readLine();
StringBuilder sb=new StringBuilder();
Arrays.sort(result);
for (String w : result) sb.append(w).append('\n');
System.out.println(sb.toString());
}
}
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
bool cmp(string a,string b)
{
//return a.compare(b)<0; //升序
return a<b; //两个效果一样
}
int main()
{
int n;
cin>>n;
string str[1001];
for(int i=0;i<n;i++)
{
cin>>str[i];
}
sort(str,str+n,cmp);//自定义的cmp函数
for(int i=0;i<n;i++)
{
cout<<str[i]<<endl;
}
return 0;
}