int main()
{
int nSum=0;
int nCnt=0;
for(int i=9 ;i<=1000;i=i+3)//也可以是i=i+1,只是慢一些。由于6、9的倍数必定是3的倍数,+3会比较快一些
{
if(i % 6==0 && i%9==0)//既是6的倍数,又是9的倍数
{
nSum+=i;//累加和
printf ("%d\t",i);
nCnt++;
if(nCnt==10)
{
nCnt=0;
printf("\n");//10个换行
}
}
}
printf("\n");//10个换行
printf ("总和是%d\n",nSum);//累加和单独输出
}
题目中数据很大
于是我们有了高精度算法
思路是什么呢:
一个数组里面每一位存的是十进制数三位(也可以只存一位,但是比较慢)
也可以理解成一千进制
这样能模拟大整数的乘法、加法
#include<stdioh>#include<stringh>
#define max(a,b) (a>ba:b)
int n;
FILE input, output;
struct bigint
{
int len;
int num[1100];
}fac,sum;
void mul(int value){//高精度乘单精度
int i;
for (i=1;i<=faclen;i++)
facnum[i]=facnum[i]value;//每个数位乘上数
for (i=1;i<=faclen;i++)
if (facnum[i]>=1000) {//逢千进一
facnum[i+1]+=facnum[i]/1000;facnum[i]%=1000;
}
if (facnum[faclen+1]) faclen++;//位数可能会增加,而且最多增加1
}
void add()//给sum加上fac的值
{
int i;
//由于此时fac永远大于sum所以不用判断sum的长度
for (i=1;i<=faclen;i++)
sumnum[i]+=facnum[i];//每一位加上fac的值
for (i=1;i<=faclen;i++)
if (sumnum[i]>=1000){//逢千进一
sumnum[i+1]++;sumnum[i]-=1000;//因为加法运算不可能往前进2
}
sumlen =faclen;
if (sumnum[sumlen+1]) sumlen++;
}
void out()//输出
{
int i;
for (i=sumlen;i>=1;i--)
{
if (i<sumlen) //压位高精度一定要判断位数
{//因为如果不是第一位,其他要补0,因为如果这个数是1001,就会变成11
if (sumnum[i]<10) fprintf(output,"00");
else if (sumnum[i]<100) fprintf(output,"0");
}
fprintf(output,"%d",sumnum[i]);
}
fputc('\n',output);
}
int main(){
input = fopen("factorin","r");
output = fopen("factorout","w");
memset(facnum,0,sizeof facnum);
memset(sumnum,0,sizeof sumnum);
fscanf(input,"%d",&n);
int i;
faclen = sumlen = 1;//初始赋成1
facnum[1] = sumnum[1] = 1;
for (i=2;i<=n;i++)
{
mul(i);
add();
}
out();
fclose(input);fclose(output);
return 0;
}
1、交换(两量交换借助第三者) 不借助第三个变量
参考:
>
import javautilScanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(Systemin);
int n = scnextInt();
Systemoutprintln(f(n));
}
public static int f(int n) {
if (n == 1)
return 1;
else {
return n + f(n - 1);
}
}
}
以上就是关于C语言:将自然数1~1000中所有既是6的倍数又是9的倍数的数累加,并输出所有参加累加的数及累加和全部的内容,包括:C语言:将自然数1~1000中所有既是6的倍数又是9的倍数的数累加,并输出所有参加累加的数及累加和、c语言求阶乘累加和、(2)非数值计算常用经典算法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)